声明第一个字符匹配字母范围时的情况

时间:2016-05-25 21:46:37

标签: sql-server

我面临将名称分类为类别的问题。我有一个很大的名称列表,并希望根据与字母范围的第一个字符匹配(例如[A-C],[D-E] ...)将它们分类到类别列中。这是一个例子:

SELECT RecID, Name
, CASE 
    WHEN LEFT(Name, 1) = 'A' THEN
        'Cat1'
    WHEN LEFT(Name, 1) = 'B' THEN
        'Cat1'
    WHEN LEFT(Name, 1) = 'C' THEN
        'Cat1'
    WHEN LEFT(Name, 1) = 'D' THEN
        'Cat2'
    WHEN LEFT(Name, 1) = 'E' THEN
        'Cat2'
    WHEN LEFT(Name, 1) = 'F' THEN
        'Cat3'
    WHEN LEFT(Name, 1) = 'G' THEN
        'Cat3'
    ELSE
        'Cat999'
   END AS Category 
FROM Table1

我可以为每个字母和数字使用WHEN语句,但这太过分了。我有这样的方式可以这样做吗?正则表达式可能吗?

SELECT RecID, Name
, CASE 
    WHEN LEFT(Name, 1) = 'A-C' THEN
        'Cat1'
    WHEN LEFT(Name, 1) = 'D-E' THEN
        'Cat2'
    WHEN LEFT(Name, 1) = 'F-G' THEN
        'Cat3'
    ELSE
        'Cat999'
   END AS Category 
FROM Table1

谢谢,

2 个答案:

答案 0 :(得分:2)

您可以在例如

之间使用
  When left(name,1) between 'A' and 'C'

答案 1 :(得分:2)

{{1}}