【发布时间】:2015-11-16 07:39:19
【问题描述】:
我在一个固定宽度的文件中将这段代码读取到一个表中,其中一列“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)))) )
在 select 语句中,“20”显示为具有 4 LEN。这玩意儿是干什么的?
我不确定为什么 VARBINARY 存在,我认为它与大型机的值设置为整数和 NULL 它遇到的“。”有关。并清理它。无论如何,当我删除 CONVERT(VARBINARY.
【问题讨论】:
-
转换为 VARBINARY 的目的是什么?此外,日期之后是什么(即,它是该行中的最后一个数据;如果不是,您将选择
20,然后是接下来的前 2 个字符)。 -
有时会有一个“.” ltrim 和 rtrim 不是数字和转换,而是帮助清理它。即使我做 DATALENGTH(SUBSTRING(A,101,4)) 我仍然得到 4
-
回答问题并第三次向 VARBINARY 提问?将 A 放入变量中并重现问题。
-
所以你添加了绝对没有价值的信息。在问题中发布数据以重现问题。
标签: tsql substring string-length