SQL server 2008查询时,通过,分隔字符串
时间: 2024-05-03 18:17:21 浏览: 293
在 SQL Server 2008 中,可以使用内置的函数 `STRING_SPLIT` 来分割字符串。但是,如果你的 SQL Server 版本低于 2016,则可以使用以下代码来实现类似的功能:
```sql
DECLARE @String VARCHAR(100) = 'A,B,C,D,E'
DECLARE @Delimiter CHAR(1) = ','
;WITH Split(stpos,endpos) AS (
SELECT 0 AS stpos, CHARINDEX(@Delimiter,@String) AS endpos
UNION ALL
SELECT endpos+1, CHARINDEX(@Delimiter,@String,endpos+1)
FROM Split
WHERE endpos > 0
)
SELECT SUBSTRING(@String,stpos,COALESCE(NULLIF(endpos,0),LEN(@String)+1)-stpos) AS value
FROM Split
```
在这个例子中,我们首先声明了一个字符串变量 `@String`,并且使用逗号作为分隔符。我们使用 `CHARINDEX` 函数来查找分隔符的位置,并递归地分割字符串,直到找到最后一个分隔符。
最后,我们将分割后的字符串存储在临时表中,并使用 `SUBSTRING` 函数将其提取出来。
相关问题
sqlserver查询时逗号分隔字符串
在 SQL Server 中,可以使用内置的 `STRING_SPLIT` 函数将逗号分隔的字符串转换为表格,然后使用 `JOIN` 语句连接表格和其他表格或视图。
例如,假设有一个名为 `list` 的表格,其中包含一个逗号分隔的字符串列 `items`,可以使用以下查询来将其转换为表格:
```sql
SELECT value
FROM STRING_SPLIT(list.items, ',');
```
这将返回一个名为 `value` 的表格,其中包含从 `list.items` 中拆分出的每个值。
如果要将这个表格连接到其他表格或视图,可以使用类似以下的查询:
```sql
SELECT *
FROM list
INNER JOIN (
SELECT value
FROM STRING_SPLIT(list.items, ',')
) items ON items.value = other_table.some_column;
```
其中 `other_table` 是您要连接到的另一个表格或视图,`some_column` 是要连接到的列。
SQL server通过空格分隔字符串
可以使用SQL Server内置函数`STRING_SPLIT()`来分隔字符串。例如,假设有一个字符串"apple banana cherry",我们可以使用以下代码将其分隔成三个值:
```
SELECT value FROM STRING_SPLIT('apple banana cherry', ' ')
```
输出:
```
value
------
apple
banana
cherry
```
其中,第二个参数是分隔符,这里使用空格。`STRING_SPLIT()`函数将字符串分隔成多个行,并在每行中返回一个值。然后,我们可以使用`SELECT`语句来检索每个值。
阅读全文