【问题标题】:Why does SQL LEN function return '1' for a string with several characters?为什么 SQL LEN 函数对包含多个字符的字符串返回“1”?
【发布时间】:2013-05-24 01:45:12
【问题描述】:

简单的问题 - 为什么当我在下面的查询中打印 @len 变量的值时,我会得到值 1,而不是 12(指定字符串中的字符数)?

DECLARE @string varchar
DECLARE @index int
DECLARE @len int
DECLARE @char char(1)
SET @string = 'content loop'
SET @index = 1
SET @len= LEN(@string)

print @len

【问题讨论】:

    标签: sql tsql sql-server-2008-r2


    【解决方案1】:

    您对@string 的声明是错误的。您在varchar 上没有长度。

    试试这个:

    declare @string varchar(255);   -- or whatever
    

    您刚刚了解到这种情况下的默认值为 1。

    这在documentation 中有明确规定。进一步说明,MS SQL 似乎使这变得相当复杂:

    当 n 未在数据定义或变量声明中指定时 语句,默认长度为1。当n未指定时使用 CAST 和 CONVERT 函数,默认长度为 30。

    正确的习惯是在使用varcharnvarchar 时始终包含长度。

    【讨论】:

      【解决方案2】:

      你需要给变量@string 一个实际的长度。打印变量@string,它可能会返回'C'。

      【讨论】:

        【解决方案3】:

        因为没有指定长度的varChar 被视为varChar(1)

        varchar 替换为varChar(30)varChar(max)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-11-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-06
          • 2020-02-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多