标签: sql-like

如何优化/重构TSQL"LIKE"子句?

我有一张117000左右的记录表.我需要执行搜索,检查给定字符串模式的3个单独字段.

我的where子句如下:

field1 LIKE '%' + @DESC + '%'
OR field2 LIKE '%' + @DESC + '%'
OR field3 LIKE '%' + @DESC + '%'
Run Code Online (Sandbox Code Playgroud)

无论输入如何,这似乎需要大约24秒......

有一个更好的方法吗?小于10(或5!)秒将更加可取.

谢谢你的帮助.

sql t-sql sql-server optimization sql-like

10
推荐指数
1
解决办法
2万
查看次数

MYSQL:SELECT方法 - 但不显示重复/ GROUP或DISTINCT?

如何选择并不显示重复项?实际上,它显示的是:apple | 苹果| 苹果| 苹果

这是我的代码:

$search = $_GET['q'];
$query = "SELECT * FROM query WHERE searchquery LIKE '%$search%' AND searchquery <> '$search'"; 
Run Code Online (Sandbox Code Playgroud)

mysql select distinct sql-like

10
推荐指数
1
解决办法
2万
查看次数

我们可以在sql中使用"NOT LIKE"吗?

我们可以使用"NOT LIKE '%abc%'" 正好相反的LIKE '%abc%'吗?我试过并得到了一些结果,但看起来不正确!

有没有类似的东西regex in SQL.

例如:

我有一个3场的桌子.

id  name  address
1    xyz    1234 abcd 
2    abc    nomans land
3    omg    #123 new-york
3    nom    $123 &7up
Run Code Online (Sandbox Code Playgroud)

我可以用特殊字符获取地址**,而不是逐个检查每个特殊字符.怎么样

regex sql db2 sql-like

10
推荐指数
2
解决办法
3万
查看次数

VB.NET'Like'操作符可能存在错误?

为什么以下评估为True

Dim result = "b" Like "*a*b"
Run Code Online (Sandbox Code Playgroud)

谢谢.

编辑:
为了概括这一点,以下返回True:

"String1" Like "*AnyText1*AnyText2*AnyText???******????*String1"
Run Code Online (Sandbox Code Playgroud)

VBA正常工作,返回False.
PowerShell正常工作,返回False:

PS C:\Users\XXX> "b" -Like "*a*b"
False
Run Code Online (Sandbox Code Playgroud)

EDIT2:
错误报告的链接:https:
//connect.microsoft.com/VisualStudio/feedback/details/748415/a-bug-in-net-like-operator

.net vb.net wildcard string-matching sql-like

10
推荐指数
1
解决办法
2153
查看次数

如何在LIKE语句中连接%和列名称

我正在尝试这个:

SELECT FacilityID, FacilityName, CMSProviderID, [Provider Number] 
FROM G2_Facility, SCIPHospitalCompare
WHERE [Provider Number] LIKE '%' + CMSProviderID + '%';
Run Code Online (Sandbox Code Playgroud)

我得到:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value '%' to data type int.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我看到很多这样的例子做这样的事情,但由于某种原因它根本不起作用.

谢谢!

sql sql-server sql-server-2008 sql-like

10
推荐指数
1
解决办法
2万
查看次数

字符串是如何传递给SQLAlchemy的.like()方法的

我正在使用SQLAlchemy在Flask上构建一个接口,其中一部分是搜索API.本质上,提前输入是使用其值(例如电子邮件)调用服务器,然后服务器在下面的过滤器中使用.like执行SQLalchemy查询

q = session.query(User).filter(User.email.like('%'+term+'%')).all()
Run Code Online (Sandbox Code Playgroud)

这个查询并没有真正返回任何有用的东西,并且在前几个字符之后,什么都没有.但是,如果我使用术语硬编码执行相同的查询,如下所示:

q = session.query(User).filter(User.email.like('%mysearchterm%')).all()
Run Code Online (Sandbox Code Playgroud)

它将返回结果完全正常,所以我将这个术语放入like()方法有一些东西,但我真的无法弄清楚问题是什么.该术语来自ajax POST,值在服务器端,只是.like()没有正确使用它.

"没有用"我的意思是返回的第一组结果与输入的实际术语无关,在长度高于3-4的术语之后,尽管DB中存在匹配的项目,但没有返回结果.

任何帮助非常感谢.

sql ajax sqlalchemy flask sql-like

10
推荐指数
1
解决办法
7130
查看次数

优化以通配符开头的LIKE表达式

我在SQL Server数据库中有一个表,其中包含一个地址字段(例如,1 Farnham Road,Guildford,Surrey,GU2XFF),我想在搜索字符串之前和之后使用通配符进行搜索.

SELECT *
FROM Table
WHERE Address_Field LIKE '%nham%'
Run Code Online (Sandbox Code Playgroud)

我在这张表中有大约200万条记录,我发现查询需要5-10秒,这并不理想.我相信这是因为前面的通配符.

我认为我说的是,由于前面的通配符,任何索引都不会用于搜索操作.

使用全文搜索和CONTAINS是不可能的,因为我想搜索单词的后半部分(我知道你可以在下面的查询中替换Guil*的搜索字符串,这将返回结果).当然运行以下返回没有结果

SELECT *
FROM Table
WHERE CONTAINS(Address_Field, '"nham"')
Run Code Online (Sandbox Code Playgroud)

有没有办法优化前面的通配符查询?

sql sql-server indexing wildcard sql-like

10
推荐指数
1
解决办法
296
查看次数

Oracle查询在索引编号列上使用'like',性能不佳

在查询1上,即使id是索引列,也正在执行全表扫描.查询2实现了相同的结果,但速度更快.如果运行查询1返回索引列,则它会快速返回,但如果返回非索引列或整行,则查询需要更长时间.

在查询3中,它运行得很快但是"代码"列是VARCHAR2(10)而不是NUMBER(12),并且索引方式与"id"相同.

为什么查询1没有意识到它应该使用索引?是否应该更改某些内容以允许索引编号列更快地执行?

[查询1]

select a1.*
from people a1
where a1.id like '119%' 
and rownum < 5
Run Code Online (Sandbox Code Playgroud)

解释计划
SELECT STATEMENT ALL_ROWS
成本:67字节:2,592基数:4
2 COUNT STOPKEY
    1表访问全表人员
     费用:67字节:3,240基数:5

[查询2]

select a1.*
from people a1, people a2
where a1.id = a2.id
and a2.id like '119%' 
and rownum < 5
Run Code Online (Sandbox Code Playgroud)

解释计划
SELECT STATEMENT ALL_ROWS
成本:11字节:2,620基数:4
5 COUNT STOPKEY
    4表格访问按行ROWID表人员
    成本:3字节:648基数:1
        3 NESTED LOOPS
        成本:11字节:2,620基数:4
            1 INDEX FULL FULL SCAN INDEX people_IDX3
            成本:2字节:54,796基数:7,828
            2 INDEX RANGE SCAN INDEX people_IDX3
            成本:2基数:1

[查询3]

select a1.* …
Run Code Online (Sandbox Code Playgroud)

sql oracle indexing oracle10g sql-like

9
推荐指数
1
解决办法
1万
查看次数

如何在整数数据类型的hibernate分离标准中使用LIKE?

我必须这样做Restrictions.like("sequenceNo", "%" + Integer.valueOf(sequenceNo.trim()) + "%").

该字段sequenceNo是整数类型,但sequenceNo参数值是字符串.我的问题是我得到一个例外java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer.出于某些原因,我真的必须使我的param成为字符串数据类型.当我在SQL中尝试使用LIKE一个整数时,它可以工作.

请帮忙.谢谢.

java model-view-controller hibernate sql-like

9
推荐指数
1
解决办法
7154
查看次数

带索引的mysql datetime字段获得范围'like'与'between和'性能

我只是发现mysql可以使用如下方式查询datetime:

like '2013-06-12%'
Run Code Online (Sandbox Code Playgroud)

我认为它不能使用索引.我谷歌,但直接找不到这样的主题.所以我使用3308614记录的表进行了测试.第一个SQL:

SELECT * FROM subscription t WHERE DATE(t.active_time) = '2013-06-30';
Run Code Online (Sandbox Code Playgroud)

我们都知道这个SQL不能使用索引,需要4秒才能得到结果.第二个SQL:

SELECT * FROM subscription t WHERE t.active_time LIKE '2013-06-30%';
Run Code Online (Sandbox Code Playgroud)

我不知道它是否可以使用索引,但它也需要4秒.第三个SQL:

SELECT * FROM subscription t WHERE t.active_time > '2007-11-30' AND t.active_time < '2007-12-01';
Run Code Online (Sandbox Code Playgroud)

我们都知道第三个SQL可以使用索引,它需要0.016秒.

所以我认为'like'在查询datetime字段时不能使用索引,因为mysql应该首先将datetime字段转换为字符串并将字符串发送到like命令.它是否正确 ?

mysql datetime between sql-like

9
推荐指数
2
解决办法
2万
查看次数