如何在SQL中将字符串的第一个字符标识为数字或字符

All*_*Kat 0 sql sql-server

我需要将数据中的第一个字符标识为数字或SQL Server中的字符。我对此还比较陌生,我不知道从哪里开始。但是,这是我到目前为止所做的。我有看起来像这样的数据:

TypeDep
Transfer From 4Z2
Transfer From BZZ
Transfer From 123
Transfer From abc
Run Code Online (Sandbox Code Playgroud)

我使用该right功能删除了“传输自”并隔离了需要检查的数据。

UPDATE #decode
SET firstPartType = Right(z.TypeDep,17)
FROM #decode z
where z.TypeDep like 'TRANSFER FROM%'

firstPartType
4Z2
BZZ
123
abc
Run Code Online (Sandbox Code Playgroud)

现在,我需要添加一列来标识字符串中的第一个字符。产生以下结果。

firstPartType   SecondPartType
4Z2             Numeric
BZZ             Alpha
123             Numeric
abc             Alpha
Run Code Online (Sandbox Code Playgroud)

Mar*_*son 6

使用LEFTISNUMERIC(),但是请注意会ISNUMERIC认为一些其他字符(例如.数字)

UPDATE #decode
  SET SecondPartType =  
      CASE WHEN ISNUMERIC(LEFT(firstPartType, 1)) = 1 THEN'Numeric'
      ELSE 'Alpha'
      END 
FROM #decode;
Run Code Online (Sandbox Code Playgroud)


Sea*_*nge 5

更强大的方法是使用 sql server 有限的正则表达式功能。ISNUMERIC 将返回单个字符的误报,例如 .,$ 等等。

SELECT 
    CASE WHEN left(firstPartType, 1) like '[0-9]' THEN 'Numeric'
        ELSE 'Alpha'
    END AS SecondPartType
Run Code Online (Sandbox Code Playgroud)