使用MySQL查找字符串中的语言(是否执行子字符串?)

使用MySQL查找字符串中的语言(是否执行子字符串?),mysql,sql,select,substring,Mysql,Sql,Select,Substring,我有一个包含语言的表,其s_name值如下所示: 'en_UK' 'en_US' 'de_CH' 'de_AT' 我想得到所有不同的语言,没有国家部分。例如,如果我刚刚有了这些例子,我需要得到: en de 这样做的最佳方式是什么 我现在有这个: SELECT DISTINCT SUBSTRING(name,1,2) FROM my_languages 试试这个: SELECT DISTINCT SUBSTRING_INDEX(name, '_', 1) langName FROM m

我有一个包含语言的表,其s_name值如下所示:

'en_UK'
'en_US'
'de_CH'
'de_AT'
我想得到所有不同的语言,没有国家部分。例如,如果我刚刚有了这些例子,我需要得到:

en
de
这样做的最佳方式是什么

我现在有这个:

SELECT DISTINCT SUBSTRING(name,1,2) 
FROM my_languages
试试这个:

SELECT DISTINCT SUBSTRING_INDEX(name, '_', 1) langName 
FROM my_languages

SELECT SUBSTRING_INDEX(name, '_', 1) langName 
FROM my_languages 
GROUP BY langName
检查此链接

尝试以下操作:

SELECT DISTINCT SUBSTRING_INDEX(name, '_', 1) langName 
FROM my_languages

SELECT SUBSTRING_INDEX(name, '_', 1) langName 
FROM my_languages 
GROUP BY langName
检查此链接这里有一个简单的方法:

select distinct left(s_name, 2)
from t
这假设语言名称是左两个字符。

这里有一个简单的方法:

select distinct left(s_name, 2)
from t

这假设语言名称是左两个字符。

这在Oracle和MySql中都适用,我认为:

SELECT SUBSTR('en_UK',INSTR('en_UK','_')+1) country FROM dual
/

我认为这在Oracle和MySql中都适用:

SELECT SUBSTR('en_UK',INSTR('en_UK','_')+1) country FROM dual
/

我认为这可能是获得价值的最佳方式。它在某种程度上不起作用。您的代码可以看到这个演示--名称是否总是在下划线符号前包含两个字母(langauge)?您是否尝试了您的代码:-)?bonCodigo:是的,它可以工作。我只是在想一个更好的方法:)我认为这可能是获得价值的最好方法。它在某种程度上不起作用。您的代码可以看到这个演示--名称是否总是在下划线符号前包含两个字母(langauge)?您是否尝试了您的代码:-)?bonCodigo:是的,它可以工作。我只是在想一个更好的方法:)