获取列,varchar或nvarchar的实际长度/避免截断给出错误

时间:2019-02-12 01:14:42

标签: sql-server

在存储过程中,我将一些值连接到一列中。

如果结果对于该列而言太长,则应将其截断。

所以我找到了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>

0 个答案:

没有答案