2012-09-13 32 views
0

使用某些「額外符號」具有數字nvarchar值例如1/2,9/6,14A它們總是以數字開頭。
如何將此「extra-symbols」值從開始索引到第一個非int字符的索引?這個例子行必須1,9,14
喜歡的東西子字符串sql nvarchar從開始到第一個非int字符的值

SUBSTRING(Value, 0, CHARINDEX(Value, /*Here must be all symbols except numbers*/)) 
+0

您使用哪種RDBMS? – Parado

+0

其MS SQL 2008 R2 – user1024448

回答

2

請嘗試查詢:

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

傳遞給LEFT或SUBSTRING函數的長度參數無效。看起來像PATINDEX返回「-1」 – user1024448

+0

是的,這個列只有int值和int與額外的符號值。在附加符號值上,PATINDEX返回索引,只有int值返回-1 – user1024448

+0

這個'SELECT LEFT(ColumnName,PATINDEX('%[^ 0-9]%',ColumnName +'a') - 1)FROM TABLE'如何? – TechDo

0

試試這個:避免附加

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

另一種選擇一個字符到表中的每一行:

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