标签: sql-like

SQL Server中的LIKE运算符

我想从一个表中获取包含输入字符串中至少一个单词的所有记录.例如,input parameter =' Stack over flow ':

select *
from sample
where  name like '%stack%'
    or name like '%over%'
    or name like '%flow%'
Run Code Online (Sandbox Code Playgroud)

如何搜索包含'stack'或'over'或'flow'的记录?

sql sql-server sql-like

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

MongoDB LIKE与Mysql LIKE

我正在将一个站点的某些部分从mysql移动到mongodb,并且将使用mongodb的一部分是搜索.我有一个问题,如果我在mysql中进行此查询

SELECT * FROM table WHERE a1 LIKE '%test%' OR a2 LIKE '%test%'
Run Code Online (Sandbox Code Playgroud)

我将获得超过10k的结果.没关系.

如果我在mongo中执行此查询

$mongo->find(
    array(
        '$or' => array(
            array('a1' => new MongoRegex('/test/')),
            array('a2' => new MongoRegex('/test/'))
        )
    )
)->count();
Run Code Online (Sandbox Code Playgroud)

我将获得大约2k的结果,减少5倍.这是怎么回事?

每个数据库中的数据是相同的.

mysql search mongodb sql-like

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

缩短句子以找到搜索值

搜索使用相同值的值

SELECT Name, UnitPrice, Quantity, Color
FROM Product
WHERE Name Like '2' OR UnitPrice Like '2' OR Quantity LIKE '2' OR  Color LIKE '2'
Run Code Online (Sandbox Code Playgroud)

有没有办法缩短句子,这样我就不需要重复变量LIKE'值'?

sql sql-like

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

SQL LIKE运算符在应该没有显示任何结果时

我有一个包含大量信息的Vehicle表,但其中一列是MSSQL表中的'Owner'

但是其中一个所有者我无法选择何时使用,LIKE但如果我使用的话可以=

'Silkeborg Distributionscenter'是所有者(是的,表格和参数中都有一个双重空间)

所以参数是:

DECLARE @Owners nvarchar(MAX) = 'Silkeborg  Distributionscenter'
Run Code Online (Sandbox Code Playgroud)

我试过了:

SELECT * FROM Vehicle WHERE @Owners = Owner 
--This gave me all the correct results
Run Code Online (Sandbox Code Playgroud)

然后:

SELECT * FROM Vehicle WHERE @Owners LIKE Owner
--No result
Run Code Online (Sandbox Code Playgroud)

然后:

SELECT * FROM Vehicle WHERE @Owners COLLATE Danish_Norwegian_CI_AS LIKE Owner COLLATE Danish_Norwegian_CI_AS
--No result
Run Code Online (Sandbox Code Playgroud)

我需要使用LIKE因为我需要能够一次选择一个所有者数组.所以原始的select语句看起来像这样

SELECT * FROM Vehicle WHERE ('|' + @Owners + '|' like '%|' + Owner + '|%')
--No result
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑: 一切正常,@ Owners是'Fredericia Distributionscenter'而不是'Silkeborg …

sql t-sql sql-server sql-like

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

MYSQL:LIKE(子查询)返回许多行

以下代码正常工作.

SELECT Message
FROM SystemEventsR
WHERE Message
LIKE CONCAT('%',(SELECT username FROM users LIMIT 1),'%')
Run Code Online (Sandbox Code Playgroud)

我的问题是,大多数时候我需要返回多行.

我省略LIMIT,导致'错误代码1242'

为什么是这样?

我需要包含至少一个用户名的所有邮件

我也使用了JOIN但无济于事

SELECT Message
FROM SystemEventsR
JOIN users ON Message LIKE CONCAT('%',(SELECT username FROM users),'%')
Run Code Online (Sandbox Code Playgroud)

我想要类似下面这样的东西,但用户表中的行数不是常量

SELECT Message
FROM SystemEventsR
WHERE 
Message LIKE CONCAT('%',(SELECT username FROM users LIMIT 1,1),'%') OR
Message LIKE CONCAT('%',(SELECT username FROM users LIMIT 2,1),'%') OR
Message LIKE CONCAT('%',(SELECT username FROM users LIMIT 3,1),'%')
Run Code Online (Sandbox Code Playgroud)

mysql rows subquery sql-like

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

像特殊字符查询的mysql'

我使用name编写了过滤数据查询,并编写了以下查询

SELECT * FROM (`abc`) WHERE (name LIKE "%test\'!&@#$\%-(3)\_er%")
Run Code Online (Sandbox Code Playgroud)

它应该返回名称以文本" test " 开头的记录,但如果我修改查询,则不会返回

SELECT * FROM (`abc`) WHERE (name LIKE "%test%\'!&@#$\%-(3)\_er%")
Run Code Online (Sandbox Code Playgroud)

然后它会给出结果.为什么不通过第一次查询给出结果?有没有其他方法可以做到这一点?

mysql codeigniter sql-like

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

在like语句中使用SQL变量

我已经对此做了很多研究,但是无法做到这一点.我正在尝试使用以下方法查询审计跟踪:

declare @batchid char (30)
select @batchid='13857584'  --enter batch id here
declare @occurred int 
select @occurred='5'
print 'Batch is in system, check MRN and encounter. User also noted below'
select a.encounter, a.mrn, a.facility, c.fullname, t.action_desc, a.occurred, a.remark 
from audit..audit_trail a (nolock)
join cabinet..users c (nolock)
on a.userinstanceid=c.userinstanceid
join audit..action_table t (nolock)
on a.action=t.action
where a.REMARK like '%' +  @batchid  + '%'
and OCCURRED > GETDATE()-@occurred
order by a.occurred
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它永远不会返回我想要的结果(没有结果).但是当我专门为下面的批处理ID运行它时(而不是@batchid)

declare @batchid char (30)
select @batchid='13857584'  --enter batch id here
declare …
Run Code Online (Sandbox Code Playgroud)

sql sql-server variables sql-like

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

在ActiveRecord查询中使用多个LIKE语句

我是Rails的新手.我已经建立了一个搜索栏,可以浏览我的所有产品.当我只搜索产品名称或描述时,我得到了它的工作.但是,如果名称与搜索词匹配或者与描述匹配,我希望将搜索词与两者和要显示的产品进行比较.

这是我目前的代码:

if params[:q]
  search = params[:q]
  @products = Product.where("name LIKE ? OR description LIKE ?", "%#{search}%")
else 
  @products = Product.all 
  end
Run Code Online (Sandbox Code Playgroud)

现在我收到一个错误:"绑定变量数错误"

我一直试图谷歌寻求解决方案,但我没有幸运.如果有人可以帮助我,我会很感激!非常感谢.

ruby-on-rails rails-activerecord sql-like

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

我可以让实体框架使用sqlite的LIKE而不是instr()吗?

目前使用的是.NET Core 2.

我使用LINQ查询类似于:

var peopleInRoseStreet = context.Person
    .Include(p => p.Addresses)
    .Where(p => p.Addresses.Any(a => a.Text.Contains("rose")));
Run Code Online (Sandbox Code Playgroud)

EF似乎将此转换为:

SELECT "p".*
FROM "Person" AS "p"
WHERE EXISTS (
    SELECT 1
    FROM "PersonAddress" AS "a"
    WHERE (instr("a"."Text", 'rose') > 0) AND ("p"."Id" = "a"."person_id"))
ORDER BY "p"."Id"
Run Code Online (Sandbox Code Playgroud)

通过使用instr(),虽然PersonAddress.Text列设置为,但比较区分大小写COLLATE NOCASE.如果我修改上面的查询来LIKE代替使用,那么搜索就像我想要的那样不区分大小写.

是否可以强制使用EF LIKE

sqlite entity-framework case-insensitive sql-like entity-framework-core

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

SQL LIKE语句,适用于不超过某个字符的所有内容

我的数据库包含“网站”列,其中包含以下数据:

foo1.web.com
foo2.gov
doo3.shoo.net
baa.com
baa2.shoo.com
Run Code Online (Sandbox Code Playgroud)

我正在寻找一条选择语句,该语句可以捕获所有类似变量的内容,但是仅在第一个句点之前,我想忽略句点之后的所有内容:

DELCARE @variable varchar(MAX);
SET @variable = 'oo';

SELECT * WHERE website LIKE '%' + @variable + '%' --(but only apply like statement up to the first .)
Run Code Online (Sandbox Code Playgroud)

所以我会得到的是:

foo1.web.com
foo2.gov
doo3.shoo.net
Run Code Online (Sandbox Code Playgroud)

但它会遗漏

baa2.shoo.com
Run Code Online (Sandbox Code Playgroud)

我在这里先向您的帮助表示感谢!

编辑:使用SQL Server

sql database sql-server sql-like

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