我正在寻找将类似SQL语句转换为等效的正则表达式即ie
LIKE '%this%'
LIKE 'Sm_th'
LIKE '[C-P]arsen'
Run Code Online (Sandbox Code Playgroud)
这样做的最佳方法是什么?
PS我想在.Net Framework(C#)上做这件事.
我知道你可以使用LIKE作为select语句来搜索字符串,然后使用通配符来匹配该字符串.ex:
Select * from table where first_name LIKE '%r%';
将返回罗伯特,罗兰,克雷格等名称.
我很好奇你将如何在字符串中搜索实际的通配符,例如%:
Select * from table where values LIKE '% % %';
(中间%是你要找的东西)(显然这不是正确的方法,这就是为什么我要问).
Restaurants我的SQLite DB中有一个表,它有以下记录
| Name | Latin_Name |
+--------+------------+
| ?????? | Manaki |
+--------+------------+
| ?????? | Enriko |
+---------------------+
Run Code Online (Sandbox Code Playgroud)
现在我正在进行这样的搜索:
从我的片段:
String selection = DBHelper.COL_NAME + " LIKE ? OR " +
DBHelper.COL_LATIN_NAME + " LIKE ?";
String[] selectionArgs = {"%"+term+"%", "%"+term+"%"};
CursorLoader loader = new CursorLoader(getActivity(),
DatabaseContentProvider.REST_CONTENT_URI,
columns, selection, selectionArgs, null);
Run Code Online (Sandbox Code Playgroud)
内容提供商query方法:
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
db = dbHelper.getReadableDatabase();
SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
switch(URI_MATCHER.match(uri)){
case …Run Code Online (Sandbox Code Playgroud) 我正在尝试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) 我有一个表列,其中包含如下所示的描述:
id description
--------------------------------------
100 ... post-doctorate ...
200 ... postdoctorate ...
300 ... post doctorate ...
Run Code Online (Sandbox Code Playgroud)
我实现了一种搜索机制,用户可以搜索关键字,不知怎的,我在搜索这些单词时遇到问题.即使我LIKE在我的WHERE条款中使用,我似乎也不能包括上面的所有3行.
WHERE description LIKE '%post-doctorate%'
Run Code Online (Sandbox Code Playgroud)
我希望能够使用任何作为我的关键字说明的变体搜索所有3个.
我也看着使用,SOUNDEX但即使这样也行不通.
请忽略我在这里没有使用参数化查询这一事实.我知道它是什么以及如何使用它,但这是我创建的一个旧项目.
我一直在阅读,发现使用LIKE导致查询大幅减速.
一位同事建议我们使用
Select Name
From mytable
a.Name IN (SELECT Name
FROM mytable
WHERE Name LIKE '%' + ISNULL(@Name, N'') + '%'
GROUP BY Name)
Run Code Online (Sandbox Code Playgroud)
替代
Select Name
From mytable
a.Name LIKE '%' + ISNULL(@Name, N'') + '%'
Run Code Online (Sandbox Code Playgroud)
现在我不是SQL专家,我不太了解这些陈述的内部运作.这是一个更好的选择,值得为每个类似的声明键入一些额外的字符吗?是否有更好的(更容易打字)替代方案?
我有一个简单的查询,但遇到了LIKE在VBA中使用的问题.我在VBA中的SQL字符串是:
stsql1 = "Select Top 25 data.* from data where data.Description Like ('*') "
Run Code Online (Sandbox Code Playgroud)
当我在我的VBA代码中运行此sql字符串时,我没有返回任何记录,但是如果我将相同的字符串复制/粘贴到MS Access中的SQL视图中的查询中,则查询将返回我期望的值.在VBA中使用"Like"语法有诀窍吗?
如果有帮助,我可以提供额外的代码和数据库的小版本.
我有一个表(MySQL 5.1,InnoDB),大约有3M行,其中98%只包含一个单词.如果我正在使用查询LIKE %searchterm%,那就太慢了.
由于SELECT只有这个表的查询,我正在考虑将其转换为MyISAM(因为InnoDB还没有,或者只支持5.6+版本,支持FULLTEXT).
但是,我想知道这是否会真正加快查询速度,因为据我所知,FULLTEXT索引是一个包含分词的表("Hello sunny day" - >"hello","sunny","一天"),所以如果每列只有一个单词,那会有意义吗?
如果我在这个文本列上放一个普通的索引,它会加快查询吗?
预先感谢您的帮助!
我想在查询中使用很多LIKE条件.我找不到实用的解决方案.我试过CONTAINS,但它不起作用.
而不是使用这个
where EIO.DigiAddress like '%abc@abc.com%'
or EIO.DigiAddress like '%def@def.com%'
or EIO.DigiAddress like '%ghi@ghi.com%'
Run Code Online (Sandbox Code Playgroud)
我想用这样的东西:
CONTAINS(EIO.DigiAddress,'%abc@abc.com%', '%def@def.com%', '%ghi@ghi.com%')
Run Code Online (Sandbox Code Playgroud)
要么
EIO.DigiAddress IN ('%abc@abc.com%', '%def@def.com%', '%ghi@ghi.com%')
Run Code Online (Sandbox Code Playgroud) 我正在上一门基本的 SQL 课程,目前正在学习基础知识,但遇到过滤问题:
任务:列出所有的行TableName,其中columnName字段内容不包含任何的以下的话:“堆”或“溢出”或“exampleword”。
SELECT columnName
FROM TableName
WHERE columnName NOT LIKE '%stack%'
Run Code Online (Sandbox Code Playgroud)
-> 我只用一个值就可以正常工作,但是当我尝试添加更多单词作为值时,它不再起作用 ->
SELECT columnName
FROM TableName
WHERE columnName NOT LIKE '%stack%' OR columnName NOT LIKE '%overflow%'
Run Code Online (Sandbox Code Playgroud)
具有多个搜索词的正确语法是什么?
显然我也不应该在这里使用 CONTAINS 否则它太容易了。