1

我想知道数据是以单字节或双字节数据加载的,请找到如下粘贴的列数据:

حمد بخش مبار

select CTD_BENAC_NAME 
from NAME_TRAN_DETAILS 
where CTD_SEND_INS_REF ='FTSCWOK11074799'

它将在结果中给出阿拉伯数据,现在我只想知道数据是在 Sqlserver 中以单字节还是双字节加载的,请问我该如何决定?

4

1 回答 1

1

这取决于该列的数据类型。在 SQL Server 中有两种字符数据类型——常规和 Unicode。常规数据类型是CHARVARCHAR。Unicode 数据类型,如NCHARNVARCHAR。对于常规字符,SQL Server 为每个字符使用一个字节的存储空间,而 Unicode 字符每个字符NVARCHAR使用两个字节。

您还可以使用以下方法获取字符串使用的字节DATALEGNTHLEN

SELECT DATALENGTH(inputstring); 

正如我稍后解释的那样,如果这inputstring是类型NVARCHARN'string' DATALENGTH会给你字节数。而这LEN将为您提供一个字符串中的字符数,并且该长度不一定是字节数。

LEN请注意, and之间的另一个区别DATALENGTHLEN排除尾随空格,DATALENGTH而不排除尾随空格。此外,请注意这些函数,因为它取决于排序规则,因为Varchar = single byte 并不总是正确的,正如下面的@MartinSmith 评论所指出的那样。

这是一个演示,您可以自己尝试。

演示

于 2012-09-27T08:19:58.597 回答