我有一个使用字母和数字的ID列:例如A00055
或AI000075
。
文本值按ASCII码升序排列,因此我将执行以下操作:
CAST((COALESCE(ASCII(SUBSTRING([FaultID],1,1)),SUBSTRING([FaultID],2,(len([FaultID])))))AS bigint) as FaultID1
然后我意识到字母的长度可以可变,为1-3个字符,因此,当我命中2个字母的值时,就会出错。有没有办法在第一个数字值上分割字符串?还是有解决此问题的更好方法?
答案 0 :(得分:0)
我相信您可以使用PATINDEX(模式索引)代替CHARINDEX。
SELECT PATINDEX('%[0-9]%','MyString1111')
这将返回字符串中第一个数字值的从1开始的索引,然后您可以用它来分割字符串。
PATINDEX的文档为here。