我有一个List <string> of variable count,我想查询(通过LINQ)一个表来查找Text列中包含任何字符串的任何项目.
试过这个(不起作用):
items = from dbt in database.Items
where (stringList.FindAll(s => dbt.Text.Contains(s)).Count > 0)
select dbt;
Run Code Online (Sandbox Code Playgroud)
查询将类似于:
select * from items where text like '%string1%' or text like '%string2%'
Run Code Online (Sandbox Code Playgroud)
这可能吗?
这是我想用它最简单的形式实现的:
SELECT
p.ProductId,
p.ProductName,
p.SKU
FROM tbl_Product p
WHERE (p.ProductName LIKE '%white%' OR p.SKU LIKE '%white%')
AND (p.ProductName LIKE '%cup%' OR p.SKU LIKE '%cup%')
Run Code Online (Sandbox Code Playgroud)
我试图在UDF中执行此操作,UDF接受所有搜索项的逗号分隔参数.
我尝试将该参数拆分为临时表并尝试连接,如下所示:
DECLARE @SearchText nvarchar(1000) SELECT @SearchText='white,cup'
DECLARE @SearchTerms TABLE (String nvarchar(200))
INSERT INTO @SearchTerms (String)
SELECT '%' + String + '%' FROM dbo.CsvSplitString(@SearchText)
SELECT
p.ProductId,
p.ProductName,
p.SKU
FROM tbl_Product p
JOIN @SearchTerms s ON (p.ProductName LIKE s.String OR p.SKU LIKE s.String)
Run Code Online (Sandbox Code Playgroud)
但这并没有返回我想要的内容 - 它会返回名称或SKU与任一搜索项匹配的任何记录.我需要它像第一个查询一样返回,其中Name或SKU匹配所有搜索项(我认为这是有道理的).
会非常欣赏正确方向的推动 - 让我知道你是否需要我更具体.
注意:目前全文搜索不是一个可行的选择.
谢谢!
有没有办法用相同的语法在PHP中模拟SQL的LIKE运算符?(%以及_通配符和通用$escape转义字符)?这样:
$value LIKE $string ESCAPE $escape
Run Code Online (Sandbox Code Playgroud)
你可以有一个函数,在不使用数据库的情况下返回PHP的评估吗?(考虑到$value,$string并且$escape已经设置了值).
我目前的搜索结果如下:
SELECT s.ID
FROM Shoe s
INNER JOIN Account a
ON s.UserID = a.ID
WHERE s.Publish='1' AND
(s.Brand LIKE '%$Search%'
OR s.Name LIKE '%$Search%'
OR s.PrimaryColor LIKE '%$Search%'
OR a.User LIKE '%$Search%')
ORDER BY s.ID DESC
LIMIT $offset, $rowsPerPage"
Run Code Online (Sandbox Code Playgroud)
当我进行诸如"蓝色"或"耐克"之类的搜索时,这样可以正常工作,但如果我进行诸如"蓝色耐克"之类的搜索,则无法返回.我应该用FULLTEXT吗?我怎样才能改善这个?我希望能够搜索可能与搜索变量相关的所有列.
我有一个查询,我想要返回名称中具有某个字符串的所有客户端,并且两侧都有通配符.所以输入可能是"史密斯",我想返回所有的东西,如"约翰史密斯公司"或"史密斯和兄弟".我希望[Client]被提示,所以我设置了这样的SQL:
PARAMETERS Client Text ( 255 );
SELECT *
WHERE (((tbl_IncomingChecks.Client) Like'%' + [Client] + '%')
ORDER BY tbl_IncomingChecks.Client;
Run Code Online (Sandbox Code Playgroud)
查询未返回任何结果.请帮忙
我的"位置"表包含6列.(ID,名称,别名,区域,X,Y)
"名称"列中某些条目的示例:
Blackwood Highschool, Paris, France
Hilltop Market, Barcelona, Spain
Roundwell Plaza, Melbourne, Australia
Rurk Mount, Moscow, Russia(mountain)
History Museum, Prague, Czech Republic
Narrow River (river), Bombay, India
Run Code Online (Sandbox Code Playgroud)
一些条目包括名称中的"(山)","(河)"或"(...)"(8个不同的).我不知道为什么表是这样创建的.它应该有一个额外的列数据,但很好.
我想从位置名称中删除"(...)"子串.我不知道该怎么做,它是这样的,所以你得到一个想法:
DELETE FROM 'Location'
WHERE 'Name'
LIKE '%(%)%';
Run Code Online (Sandbox Code Playgroud)
我知道这会删除整行,但我只是想从'Name'字符串中删除(%)项.
对不起我的英语不好.
我想检索其TITLE字段满足某些模式的行(不区分大小写),并且此字段仅包含非英文字母.
我试过这个:
SEARCH * FROM TABLE_NAME WHERE UPPER(column_name) LIKE UPPER('%pattern%');
但是,它不起作用,可能是因为表中只包含非英文字母.
更新:
例:
SELECT * FROM PartnersTable WHERE UPPER(TitleColumn) LIKE UPPER('%pattern%') ;
Run Code Online (Sandbox Code Playgroud)
哪里:
TitleColumn可能包含"Газпром","Лукойл","Йотафон","Мечтаювелира",
pattern可能包含"газ","Ювелир"等.
我正在尝试like使用mgo进行查询而没有运气.
我想要的是类似的mongodb查询
db.organisation.find( { "permalink" : /org.*/ } )
Run Code Online (Sandbox Code Playgroud)
我仍然坚持
sess.DB(db).C(cApp).
Find(bson.M{"permalink": "org:bms.*"}).
All(&m)
Run Code Online (Sandbox Code Playgroud) 有人能解释这些SQL之间如此大的性能差异吗?
SELECT count(*) as cnt FROM table WHERE name ~ '\*{3}'; -- Total runtime 12.000 - 18.000 ms
SELECT count(*) as cnt FROM table WHERE name ~ '\*\*\*'; -- Total runtime 12.000 - 18.000 ms
SELECT count(*) as cnt FROM table WHERE name LIKE '%***%'; -- Total runtime 5.000 - 7.000 ms
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,LIKE运算符和简单正则表达式之间的差异是两倍以上(我认为LIKE运算符内部将转换为正则表达式,并且应该没有任何区别)
那里有近13000行,"name"列是"text"类型.没有与表中定义的"name"列相关的索引.
解释他们的每一个:
EXPLAIN ANALYZE SELECT count(*) as cnt FROM datos WHERE nombre ~ '\*{3}';
Aggregate (cost=894.32..894.33 rows=1 width=0) (actual time=18.279..18.280 rows=1 loops=1)
-> Seq Scan on …Run Code Online (Sandbox Code Playgroud) 我已经写了一个措辞,将一个很长的字符串写成小块,在完成一个项目的措辞之后,它将它从@input中移除并继续,直到它找不到任何项目的短语.我正在根据LIKE模式选择项目.
在某些情况下,它会选择消息的其他部分,然后以不定式循环结束.
我希望使用LIKE子句选择的模式格式为:
(1至9的任何数字)+(仅可变长度AZ)+'/'+(仅可变长度AZ)+ Cr或Lf或CrLf的空间.
--This is what I do have:
DECLARE @match NVarChar(100)
SET @match = '%[1-9][a-z]%'
DECLARE @input1 varchar(max),@input2 varchar(max)
SET @input1 ='1ABCD/EFGH *W/17001588 *RHELLO SMVML1C'
DECLARE @position Int
SET @position = PATINDEX(@match, @input1);
SELECT @position;
--after the loop- it is also 'catching' the 1C at the end of the string:
SET @input2 = '*W/17001588 *RHELLO SMVML1C'
SET @position = PATINDEX(@match, @input2);
SELECT @position
---In order to eliminate this, I have tried to change @match:
SET @match = …Run Code Online (Sandbox Code Playgroud) sql-like ×10
sql ×6
mysql ×2
php ×2
sql-server ×2
t-sql ×2
go ×1
join ×1
linq ×1
linq-to-sql ×1
mgo ×1
mongodb ×1
ms-access ×1
parameters ×1
pcre ×1
performance ×1
postgresql ×1
regex ×1
search ×1
sqlite ×1
string ×1
substring ×1
wildcard ×1