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

时间:2015-10-05 13:46:12

标签: sql sql-server

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

TypeDep
Transfer From 4Z2
Transfer From BZZ
Transfer From 123
Transfer From abc

我使用right功能删除了来自'的转移。并隔离我需要检查的数据。

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

firstPartType
4Z2
BZZ
123
abc

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

firstPartType   SecondPartType
4Z2             Numeric
BZZ             Alpha
123             Numeric
abc             Alpha

6 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

我认为这应该有效:

binary

答案 3 :(得分:0)

您可以使用此命令

ISNUMERIC(LEFT(firstPartType, 1))

如果第一个字符是Numbert,则返回1 0如果不是

我认为就是你所需要的一切

答案 4 :(得分:0)

选择ISNUMERIC(左(' 4ello world',1))将是" 1"如果第一个字符是数字。

答案 5 :(得分:0)

您可以尝试:

calendarapi_mock.return_value._get_event_list.return_value = mocked_calendar_events