sql精确查询逗号隔开的字段

有时候有些数据保存时用逗号隔开的数据,需要检索某个值所对应的数据的时候需要用到下面这种方式:

select * from tablename where charindex(','+'3'+',',','+name+',')>0

还有一种,我没去试过:

--先创建一个函数,用来拆分字段值
Create Function f_split1(@SourceSql Varchar(8000),@StrSeprate Varchar(2)) 
Returns @temp Table(id Int Identity(1,1), col Varchar(100)) 
As 
begin 
Declare @ch as Varchar(100) 
Set @SourceSql=@SourceSql+@StrSeprate 
While(@SourceSql<>'') 
Begin 
Set @ch=left(@SourceSql,Charindex(@StrSeprate,@SourceSql,1)-1) 
Insert @temp(col) Values(@ch) 
Set @SourceSql=Stuff(@SourceSql,1,Charindex(@StrSeprate,@SourceSql,1),'') 
End 
Return 
End 
Go

--以下是查询代码
Select * From (
Select T.id,A.col As Wid,B.col As WName From T 
Cross Apply dbo.f_split1(wid,',') A
Cross Apply dbo.f_split1(wname,',') B
where A.id=B.id) S
Where Wid='2' And WName='qq'

--解释,把字段按逗号拆分后,按自增id关联起来,及wid的第一个值跟wname的第一个值关联,以后依次,然后用等号查询你要的值

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在SQL中,可以使用字符串函数和操作符来处理用逗号隔开字段。 一种常见的方法是使用内置的字符串函数,例如MySQL提供的`FIND_IN_SET`函数。它可以在逗号分隔的字符串中查找子字符串,并返回其位置。使用该函数,可以选择包含特定值的记录。 例如,假设有一个名为`table1`的表,其中有一个名为`column1`的字段,内容为用逗号隔开的字符串。如果想要选择包含特定值的记录,可以使用以下语句: ``` SELECT * FROM table1 WHERE FIND_IN_SET('特定值', column1) > 0; ``` 另一种处理方法是使用`LIKE`操作符结合通配符来查找包含特定值的记录。通配符`%`可以表示任意字符。 例如,使用以下语句可以选择包含特定值的记录: ``` SELECT * FROM table1 WHERE column1 LIKE '%特定值%'; ``` 需要注意的是,这种方法可能会造成性能损失,特别是当数据量较大时。因此,应尽量避免在查询中频繁使用`LIKE`操作符。 除了上述方法,还可以使用正则表达式来处理这种情况。不同的数据库提供了不同的正则表达式函数和操作符,可以根据具体数据库进行相应的处理。 总的来说,使用SQL处理用逗号隔开字段可以利用字符串函数、操作符或正则表达式来实现各种需求,如选择包含特定值的记录或分割字段等。具体方法取决于数据库的支持和需求的复杂程度。 ### 回答2: SQL可以使用内置函数将用逗号隔开字段进行处理。常用的几个函数如下: 1. CONCAT()函数:该函数接受多个字符串作为参数,并将它们按照指定的顺序连接起来。可以使用该函数将用逗号隔开字段合并为一个字段。 示例: ```sql SELECT CONCAT(field1, ',', field2, ',', field3) AS combined_field FROM table_name; ``` 2. GROUP_CONCAT()函数:该函数用于将一个组中的多个值连接成一个字符串,并用指定的分隔符隔开。可以使用该函数将用逗号隔开字段连接为一个字段。 示例: ```sql SELECT GROUP_CONCAT(field_name SEPARATOR ',') AS combined_field FROM table_name; ``` 3. REPLACE()函数:该函数用于在一个字符串中替换指定的子字符串。可以使用该函数将逗号替换为其他符号,或者将逗号去除。 示例: ```sql SELECT REPLACE(field_name, ',', '-') AS modified_field FROM table_name; ``` 通过以上几种函数,可以在SQL中对用逗号隔开字段进行合并、连接、替换等操作,以满足不同的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值