我有一个列,其中包含发生操作的服务器以及国家/地区。因此,例如,列'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
任何人都可以帮忙吗?
答案 0 :(得分:2)
这应该会为您提供不同国家/地区代码的列表:
SELECT
LEFT(COL, LEN(COL) - 1)
FROM (
SELECT
RIGHT(SOURCE, LEN(SOURCE) - CHARINDEX('[', SOURCE)) COL
FROM TABLE) TBL
答案 1 :(得分:2)
您需要使用substring
和charindex
。 charindex
会为您提供列中字符串的位置,substring
非常明显。
我没有对此进行测试,但是这样的事情可以解决这个问题:
select distinct substring(source
, charindex('[', source)
, charindex(']', source) - charindex('[', source))
);