我有以下情形。該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