我将这段代码读入一个固定宽度的文件中,放入一个包含一列' A'这是作为varchar(300)创建的,然后将该表读作...
LTRIM(RTRIM(CONVERT(VARBINARY,SUBSTRING(A,101,4))))
在大多数情况下,它返回4位数年份。我遇到一个错误,我收到的文件中有一个拼写错误,其中年份为' 20'所以
LTRIM(RTRIM(CONVERT(VARBINARY,SUBSTRING(A,101,4))))
返回20,我想在where语句中放入一个说明的过滤器
LEN( LTRIM(RTRIM(CONVERT(VARBINARY,SUBSTRING(A,101,4)))) ) = 4
LEN( LTRIM(RTRIM(CONVERT(VARBINARY,SUBSTRING(A,101,4)))) )
答案 0 :(得分:1)
LEN返回给定字符串表达式的字符数,而不是字节数,不包括尾随空格。
DATALENGTH返回用于表示任何表达式的字节数。 DATALENGTH对varchar,varbinary,text,image,nvarchar和ntext数据类型特别有用,因为这些数据类型可以存储可变长度数据。 NULL的DATALENGTH为NULL。
修改强>
我想我明白了。很多时候你提到“。”。在我看来,你有浮动值,它隐式转换为varchar。检查下面。
SELECT LEN(t.val), t.val
FROM (SELECT 20.0) AS t(val)