У меня есть столбец идентификаторов, и мне нужно использовать SQL для извлечения первых двух символов после "-"
Я использую пользовательский SQL-запрос в Tableau 10.4
Пример столбца:
ABC - BCA - IT
AD - HD - A
QWE - QWE - E
Что мне нужно:
BC
HD
QW
Я попытался использовать подстроку и функцию 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
Знаете ли вы, использую ли я пользовательскую функцию запроса SQL в Tableau, если поддерживаются функции подстроки / charindex?
С MySQL есть много возможных выражений. Большая разница заключается в обработке строковых значений, которые не содержат ровно два символа тире.
MySQL предоставляет удобную функцию SUBSTRING_INDEX.
https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substring-index
Если предположить, что строковые значения содержат ровно два символа тире, тогда получится что-то вроде этого:
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 не поддерживает substring.
В качестве альтернативы этот мощь также помогает:
MID([Column], FIND([Column], "-") + 2, 2)
Отметьте свой вопрос с помощью базы данных, которую вы используете.