【发布时间】:2020-07-22 21:09:18
【问题描述】:
表:
id | name
1 | a,b,c
2 | b
输出
id | name
1 | a
1 | b
1 | c
2 | b
我在网上找到了这个查询,它在 mySql Phpmyadmin 查询编辑器中运行良好。
SELECT
tablename.id, SUBSTRING_INDEX(SUBSTRING_INDEX (tablename.name, ',', numbers.n), ',', - 1) NAME
FROM (SELECT 1 n UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4) numbers
INNER JOIN tablename
ON CHAR_LENGTH (tablename.name) - CHAR_LENGTH (REPLACE (tablename.name, ',', '')) >= numbers.n - 1
ORDER BY id, n
但在 SQL Server 中,它会抛出
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]'SUBSTRING_INDEX' is not a recognized built-in function name.
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near 'numbers'.
编辑:此查询用于 tableau 开发,其中 TSQL 未按预期工作
【问题讨论】:
-
对不起。虽然标题相似,但情况不同
-
MySQL 和 TSQL 是 SQL 的不同方言 显然,您需要将 MySQL 查询转换为 TSQL - 您没有明确表示的内容。但是使用正确规范化的表不会有这个问题 - 所以现在也许是修复架构的时候了。
标签: mysql sql-server sql-server-2008 sql-server-2005