在存储过程中,我将一些值连接到一列中。
如果结果对于该列而言太长,则应将其截断。
所以我找到了COL_LENGTH
,并做了
myfield=substring(p.newattr,1,COL_LENGTH('mytable','myfield'))
但是,myfield是nvarchar(25)
,但是是COL_LENGTH=50
。
这是因为nvarchar
使用双字节,所以我应该这样做
substring(p.newattr,1, COL_LENGTH('mytable','myfield')/2)
我不喜欢这种方法。如果我做了一个功能;我想知道这个领域的真实长度。如果我将字段的定义从varchar
更改为nvarchar
,该怎么办,那么我将必须通过所有功能来纠正此错误。
TL; DR 是否有一种简单的方法来获取字段的长度(以允许的字符而不是字节为单位),无论该字段是varchar
还是nvarchar
?< / p>