更新 - 让我们看看第二个字段,我得到的结果很好......我仍然得到第一个的错误..我需要弄清楚第一个..我认为我需要的是删除第一个..
这有效..第二长度
SELECT SUBSTRING(AFIELD,
CHARINDEX(CHAR(10), AFIELD,CHARINDEX(CHAR(10), AFIELD)+1),
CHARINDEX(CHAR(10), AFIELD,CHARINDEX(CHAR(10), AFIELD,CHARINDEX(CHAR(10), AFIELD)+1)+1) - CHARINDEX(CHAR(10), AFIELD,CHARINDEX(CHAR(10), AFIELD)+1)) as [second_length]
FROM SOMETABLE with (nolock)
第三长度也有效..
SELECT SUBSTRING(AFIELD,
CHARINDEX(CHAR(10), AFIELD,CHARINDEX(CHAR(10), AFIELD)+1),
CHARINDEX(CHAR(10), AFIELD,CHARINDEX(CHAR(10), AFIELD,CHARINDEX(CHAR(10), AFIELD)+1)+1)-CHARINDEX(CHAR(10), AFIELD,CHARINDEX(CHAR(10), AFIELD)+1)) as [THIRD_length]
FROM SOMETABLE with (nolock)
这仍然不起作用..嗯..
SELECT SUBSTRING(AFIELD,
CHARINDEX(CHAR(10), AFIELD),
CHARINDEX(CHAR(10), AFIELD,CHARINDEX(CHAR(10), AFIELD)+1)-CHARINDEX(CHAR(10), AFIELD)) as [FIRST_length]
FROM SOMETABLE with (nolock)
旧信息.. 这很好..
SELECT CHARINDEX(CHAR(10), AFIELD)[first]
,CHARINDEX(CHAR(10), AFIELD,CHARINDEX(CHAR(10), AFIELD)+1)[second]
FROM SOMETABLE
但是当我试图减去这两个时,结果是空的..
我已按照此处发布的信息和 - http://phelabaum.com/archive/tag/charindex/
SELECT SUBSTRING(AFIELD,
CHARINDEX(CHAR(10),AFIELD)+1,
CHARINDEX(CHAR(10),AFIELD,CHARINDEX(CHAR(10),AFIELD)+1) - CHARINDEX(CHAR(10),AFIELD)) as [first_length]
FROM SOMETABLE
当我运行时,我得到:消息:
消息537,级别16,状态3,行1传递给的长度参数无效 LEFT或SUBSTRING功能。
该字段为CHAR(10)或换行符分隔。
答案 0 :(得分:1)
works fine如果您正在测试的文字中确实有2 CHAR(10)
,其间有一些文字。如果至少丢失一个 - 你会得到那个错误。
请注意,如果找不到char,CHARINDEX
本身不会返回任何错误 - 它将简单地返回0,这就是您的第一个查询运行的原因。