SQL SERVER 查询中,我需要对列按逗号分隔,该怎么写SQL脚本
时间: 2024-09-09 11:08:03 浏览: 154
在SQL Server查询中,如果你想对一列值按照逗号分隔并处理它们,通常可以使用`STRING_SPLIT`函数或者自定义存储过程来达到目的。这里是一个例子,假设你想从名为`table_name`的表的`column_name`列中分割逗号:
```sql
-- 使用STRING_SPLIT函数
SELECT item
FROM table_name
CROSS APPLY STRING_SPLIT(column_name, ',') AS result(item);
-- 如果你不想依赖内置函数,可以创建一个存储过程
CREATE FUNCTION dbo.SplitString (@input NVARCHAR(MAX), @delimiter VARCHAR(8000))
RETURNS TABLE
AS
RETURN (
WITH cte (n) AS (
SELECT 1 UNION ALL
SELECT n + 1
FROM cte
WHERE n + 1 <= DATALENGTH(@input) - LEN(REPLACE(@input, @delimiter, '')) + 1
)
SELECT value = SUBSTRING(@input, number, CHARINDEX(@delimiter, @input + @delimiter, number) - number)
FROM cte
);
```
使用上面的存储过程示例:
```sql
SELECT value
FROM dbo.SplitString(table_name.column_name, ',');
```
请注意,`STRING_SPLIT`函数在SQL Server 2016及更高版本可用,对于早期版本,你需要创建存储过程的方式来实现。
阅读全文