SqlServer使用单列选择不同

时间:2016-02-08 15:22:45

标签: sql-server distinct

我有一个列,其中包含发生操作的服务器以及国家/地区。因此,例如,列'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

任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

您需要使用substringcharindexcharindex会为您提供列中字符串的位置,substring非常明显。

我没有对此进行测试,但是这样的事情可以解决这个问题:

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