使用SQL从字符串中提取字符
我有一列ID,我需要使用SQL来提取“-”后面的前两个字符 我正在使用Tableau 10.4中的自定义SQL查询 示例列:使用SQL从字符串中提取字符,sql,substring,character,tableau-api,charindex,Sql,Substring,Character,Tableau Api,Charindex,我有一列ID,我需要使用SQL来提取“-”后面的前两个字符 我正在使用Tableau 10.4中的自定义SQL查询 示例列: ABC - BCA - IT AD - HD - A QWE - QWE - E 我需要的是: BC HD QW 我尝试过使用substring和Charindex函数,但似乎无法得到它。有什么想法吗?您可以使用: select substring(example, charindex(' - ', example) + 3, 2) from (values ('AB
ABC - BCA - IT
AD - HD - A
QWE - QWE - E
我需要的是:
BC
HD
QW
我尝试过使用substring和Charindex函数,但似乎无法得到它。有什么想法吗?您可以使用:
select substring(example, charindex(' - ', example) + 3, 2)
from (values ('ABC - BCA - IT'), ('AD - HD - A')) v(example)
如果您正在使用SQL Server,则可以使用
substring()
函数:
select substring(col, charindex('-', col) + 1, 2)) as need
在MySQL中,有很多可能的表达式。最大的区别是处理不完全包含两个破折号字符的字符串值 MySQL提供了一个方便的
子字符串索引函数
假设字符串值正好包含两个破折号字符,则如下所示:
SELECT c.foo
, TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(c.foo,'-',2),'-',-1)) AS mid
FROM (
SELECT 'ABC - BCA - IT' AS foo
UNION ALL SELECT 'AD - HD - A'
UNION ALL SELECT 'QWE - QWE - E'
) c
如果不想删除前导空格和尾随空格,请省略TRIM
函数
foo mid
--------------- ---
ABC - BCA - IT BCA
AD - HD - A HD
QWE - QWE - E QWE
我已经有一段时间没有和Tableau合作了,但是IIRC这应该是一个有用的东西:
LEFT(TRIM(SPLIT([Column], `-`, 2)), 2)
据我所知,Tableau的任何版本都不支持子字符串
或者,这也可能有助于:
MID([Column], FIND([Column], "-") + 2, 2)
用您正在使用的数据库标记您的问题。如果支持子字符串/charindex函数,您知道我是否在使用Tableau中的自定义SQL查询函数吗?