SqlServer Select 使用单列区分

SqlServer Select Distinct Using Single Column

我有一列包含发生操作的服务器以及国家/地区。因此,例如,列 'source' 将包含 'server001[en-US]'。我需要做的是列出所有不同的国家/地区代码。

ID  SOURCE              STATUS
==============================
1   server001[en-US]    3
2   server002[de-CH]    3
3   server005[en-US]    1
4   server001[tr-TR]    3

理想的查询会输出

en-US
de-CH
tr-TR

有人可以帮忙吗?

这应该会为您提供不同国家/地区代码的列表:

SELECT 
   LEFT(COL, LEN(COL) - 1)
FROM (
    SELECT
        RIGHT(SOURCE, LEN(SOURCE) - CHARINDEX('[', SOURCE)) COL
    FROM TABLE) TBL

您需要玩 substringcharindexcharindex 将为您提供字符串在列中的位置,substring 非常明显。

我没有对此进行测试,但像这样的东西应该可以解决问题:

select distinct substring(source
     , charindex('[', source)
     , charindex(']', source) - charindex('[', source))
     );