我有以下情形。该VARCHAR场只能有2个值1:SQL - 从VARCHAR字段计数INT
'12345 - some random text'
'87654321 - some random text'
我想要做的选择只有INT值,并使用这下面的查询,我几乎有,但我缺少一个关键组成部分:
SELECT
CASE
WHEN (ColumnName LIKE '%[0-9][0-9][0-9][0-9][0-9]%')
then SUBSTRING(ColumnName ,0 ,CHARINDEX('',ColumnName)+6)
WHEN (ColumnName LIKE '%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%')
then SUBSTRING(ColumnName ,0 ,CHARINDEX('',ColumnName)+9)
ELSE (NULL) END
FROM dbo.TableName
实际结果:
12345
87654
预期结果:
12345
87654321
请任何人都可以指出我失踪的一件简单的事情吗?
不要留到第一个空格字符,把结果为整数。 – jarlh 2015-02-06 15:58:17
或者,只需切换项目顺序,像第一个那样最长... – jarlh 2015-02-06 15:59:25
考虑重构架构。如果这种事情(两个数据字段打包到一个字段中)经常需要分离,请将它们分成两个单独的字段。在需要时连接两个字段比在复合字段中搜索分隔符更容易和快得多。这两个字段的方法是可直接索引的,单个字段不是。 – wallyk 2015-02-06 16:02:57