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
您需要玩 substring
和 charindex
。 charindex
将为您提供字符串在列中的位置,substring
非常明显。
我没有对此进行测试,但像这样的东西应该可以解决问题:
select distinct substring(source
, charindex('[', source)
, charindex(']', source) - charindex('[', source))
);
我有一列包含发生操作的服务器以及国家/地区。因此,例如,列 '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
您需要玩 substring
和 charindex
。 charindex
将为您提供字符串在列中的位置,substring
非常明显。
我没有对此进行测试,但像这样的东西应该可以解决问题:
select distinct substring(source
, charindex('[', source)
, charindex(']', source) - charindex('[', source))
);