子串sql nvarchar值从start到first非int字符

时间:2012-09-13 11:28:48

标签: sql sql-server-2008-r2 integer substring nvarchar

具有一些“额外符号”的数字nvarchar值例如 1 / 2,1,9 / 6,14 它们始终以数字开头。
如何从开始到第一个非int字符的索引将这个“额外符号”值子串?示例行必须 1,9,14

这样的东西
SUBSTRING(Value, 0, CHARINDEX(Value, /*Here must be all symbols except numbers*/))

3 个答案:

答案 0 :(得分:2)

请尝试查询:

SELECT LEFT(ColumnName,PATINDEX('%[^0-9]%', ColumnName+'a')-1) FROM TABLE

答案 1 :(得分:0)

试试这个:

SELECT CASE PATINDEX('%[^0-9]%', ColumnName) WHEN  0 THEN ColumnName
ELSE LEFT(ColumnName,PATINDEX('%[^0-9]%', ColumnName)-1) END

答案 2 :(得分:0)

另一个选项可以避免将字符附加到表格中的每一行:

SELECT SUBSTRING(col, 1, COALESCE(NULLIF(PATINDEX('%[^0-9]%', col)-1, -1), 255)) 
  FROM dbo.mytable;