Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 语句第一个字符与字母范围匹配时的大小写_Sql Server - Fatal编程技术网

Sql server 语句第一个字符与字母范围匹配时的大小写

Sql server 语句第一个字符与字母范围匹配时的大小写,sql-server,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

我面临着一个问题,要把这个名字分成一个类别。我有一个很大的名称列表,希望根据第一个字符与字母范围的匹配(例如[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

谢谢,

您可以在

  When left(name,1) between 'A' and 'C'

你可以在两个词之间使用

  When left(name,1) between 'A' and 'C'

正如前面提到的,Thebetween也可以很好地工作!我不知道我可以使用像“[]”这样的字母范围。非常感谢。正如前面提到的,Thebetween也可以很好地工作!我不知道我可以使用像“[]”这样的字母范围。非常感谢。也谢谢你这个解决方案。也谢谢你这个解决方案。