不過常常都會出現的狀況就是....
即便我已經用了 SUBSTRING 也是一樣!
但是我用 LEN 看一下 SUBSTRING 之後的長度明明就沒有超過呀?
後來上網查了一下有關 LEN 中文長度的搜尋,
然後找到了一個新的函數 DATALENGTH ,
大致上 LEN 的算法是中文算長度1、英文也算長度1,
然後 DATALENGTH 的算法是中文長度2、英文長度1,
中間的差異大概就是一個算字元數,一個算BYTE數吧?
所以當我寫出下面 SQL 的時候,算出來的數字是完全不一樣的!
LEN(name_ch) AS "LEN", DATALENGTH(name_ch) AS "DATALENGTH"
於是乎我就想說那 SUBSTRING 有沒有類似的函數可以用呢?
很遺憾的是我沒有找到,也許 SQL SERVER 2020 會支援吧?
所以當我寫下面那樣的話還是會出現二進位截斷的問題,
SUBSTRING(name_ch, 1, 10)
最後我只好改用 CONVERT 的方式來寫,如下:
CONVERT(VARCHAR(10), name_ch)
如果大家知道 SUBSTRING 有類似 DATALENGTH 的函式可以用的話麻煩通知我一下嘿!
沒有留言:
張貼留言