1,SELECT SUBSTRING('123456789A123456差額',1,19)
返回:123456789A123456差?
結論:此方法對於于包含漢字的字串的截取可能會造成亂碼。
返回:123456789A123456差?
結論:此方法對於于包含漢字的字串的截取可能會造成亂碼。
2,SELECT CONVERT(VARCHAR(19),'123456789A123456差額')
返回:123456789A123456差
但是在SQL2005上卻顯示返回結果:123456789A123456差?
結論:此方法對于SQL2000可以,對于SQL2005不行,慎用。
3,SELECT SUBSTRING(CONVERT(TEXT,'123456789A123456差額'),1,19)
返回:123456789A123456差
結論:此方法可以取到正确的結果。
4,SELECT cast('123456789A123456差額' as VARCHAR(19))
返回:123456789A123456差?
但是在SQL2005上卻顯示返回結果:123456789A123456差?
結論:此方法對于包含漢字的字串的截取可能會造成亂碼。
5,SELECT CONVERT(char(19),'123456789A123456差額')
返回:123456789A123456差
結論:此方法可以取到正确的結果。
***所以通過以上比較,如果要取得准确的值且不會截斷中文字符,最优的辦法是3或5,也就是用SUBSTRING(CONVERT(TEXT,...或 SELECT CONVERT(char(19),....這樣的方法。