sqlserver数据库中怎样查询某个字段中含有某些字

嘿,让我告诉你我当年在 SQL Server 中遇到的陷阱。
当时我在上海一家公司做一个项目,数据量不大,只有几十万条记录。
有一天,老板让我检查一组名字中带有“小”字的学生。
我应该用什么?当时我就用了LIKE'%小%'。

结果是什么?检查了又检查,发现速度慢得要命。
数据表相当大。
学生表中有学生姓名。
我一看,哦,我忘了加索引了。
想一想,对于像LIKE'%小%'这样的模糊查询,数据库根本不能使用索引,必须扫描全表。
那天我正在玩这个,差点服务器崩溃了。

后来,我学会了聪明。
如果数据量不大,例如几十万条,就适合使用模糊查询。
但如果数据量很大,比如几千万条,你还用LIKE'%小%'吗?这肯定行不通。
此时,你应该考虑为常用字段创建单独的索引或使用全文搜索等方法。
然而,全文检索很复杂。
当时不太明白,所以花了一整天的时间调整了一下。

因此,当您使用 LIKE '%...%' 时,您需要注意数据量。
只是当时没注意,有一个项目差点就破产了。
后来老板说我写的SQL太“暴力”。
你在生气吗?但现在想来,小时候就爱胡闹,幸好后来懂了。

sql查找包含某些字符的列

直接上代码。
我上周处理过类似的索赔。

1 .创建临时表。
sql 创建表表1 ( id 整数 名称 VARCHAR(5 0); 代码 VARCHAR(2 0) )
2 . 输入模型数据。
sql 插入表 1 (id、列名、代码)值。
(1 ,'姓名','001 '); (2 , '时代', '002 '); (3 、'地址'、'003 ')
3 . 定义变量。
sql 声明 @colname VARCHAR(5 0) = '名称' @code VARCHAR(2 0) = '001 '
声明 4 .动态SQL查询 sql @sql声明NVARCHAR(最大值) SET @sql = N'SELECT FROM table1 WHERE colname = @colname AND code = @code' EXEC sp_executesql @sql; N'@colname VARCHAR(5 0); @code VARCHAR(2 0)'; @colname @代码
5 .包含字符查询。
sql DecLARE @searchStr VARCHAR(1 0) = '姓氏' 从表中选择 '%' + @searchStr + '%'
执行一下看看效果。
您需要哪一部分?

如何用sql语句,判断数据库中某字段的内容,包含于某字符串

是的,是的,CHARINDEX非常有用,尤其是2 02 2 年的那个时候,当时我还在北京那家公司写SQL,做大量客户数据。
必须找到一个地方,像“ad”这样的不同字符串会出现在另一个大的“rrdadgff”中。
我用了CHARINDEX('ad','rrdadgff'),结果出来了,是4 很简单,找个地方。

这种技巧也经常被使用。
例如,如果您想查找特定字段中包含特定字符串的记录,请使用“%string%”之类的内容。
这是我在 2 02 2 年上海项目中使用它的那一年完成的。
如果用户评论中有“好评”记录,我将其写为“%good review%”。
它就像你得到的一样简单和粗暴。

全文索引不仅仅是化石。
2 02 2 年,我们系统中的数据量越来越大,像搜索这样的例程非常慢。
后来老板安排我们对某个关键字段做全文索引。
例如,在产品描述字段中,添加全文索引后,搜索“防水”一词的速度要快得多。
随着使用量的增加,查询时间从几秒减少到数百毫秒。
从财务上来说,虽然索引成本更低,但搜索速度更快,用户满意度更高,未来的收益将是巨大的。
也许我有点极端,我认为全文索引更好。

嘿嘿,说起CHARINDEX,它返回位置,意味着模糊搜索,全文索引意味着快速。
就是这样。