标签: sql-like

Sqlite + 80K行+ LIKE =键盘滞后

我有这个问题,我一直推迟解决,但现在是时候了.

我有一个基本的字典程序.它有一个UISearchBar和一个UITableView.它的工作方式除了在设备上运行时它会导致键盘滞后.(模拟器很好,当然)我有两种类型的搜索.按你型和回程.我发现两者都需要大约相同的时间来返回结果,但是As-you-type会使键盘滞后.

我有UISearchBar textDidChange,它接受searchText并将其发送到执行所有sqlite提升的搜索方法,将结果放入Array中.重新加载表格.

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
    if((searchType == SEARCH_AS_YOU_TYPE) && ([searchText length] >= 2)){
        NSString *myKeyword = [NSString stringWithFormat:@"%@", searchText];
        [self search:myKeyword];
        [myTableView reloadData];
    }
}
Run Code Online (Sandbox Code Playgroud)

我将结果限制为50.我的SQL查询使用了LIKE和OR,还没有办法解决.

SELECT WORD_ID, DEFIN, PINYIN, SIMP, TRAD from WORDS where DEFIN LIKE "%to dog %" OR DEFIN LIKE "%dog" OR DEFIN LIKE "%dog%"  ORDER BY DEFIN LIMIT 50
Run Code Online (Sandbox Code Playgroud)

我也尝试将[myTableView reloadData]移动到搜索方法中,希望键盘至少不会滞后.没有喜悦.遗憾的是,我知道sqlite基本上是检查每一行,当它使用like运算符时.但是对于80人来说3-4秒似乎有点慢.

任何想法,想法,意见或建议将不胜感激!

sqlite iphone keyboard performance sql-like

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

在sqlite中使用LIKE case sensivity的便捷方法

我看到LIKE运算符可以在我切换PRAGMA case_sensitive_like = ON时优化查询.我测量,它确实有效,查询"LIKE someth%"在分区大的二进制索引表上变快十倍.但问题是我的库作为我的应用程序的附加组件实现,它维护自己的表与它连接的任何数据库.所以问题是

  • 我无法读取case_sensitive_like,因为它只支持设置,而不是读取.所以我不能暂时读取状态并在查询后返回它,
  • 作为一个应该服从db的主要功能的插件,我不应该将设置更改为我需要好的,因为它可能会影响其他例程.
  • 我看到没有Like(区分大小写)内部等价物直接调用optimizid查询.例如,使用LIKECASESENSITIVE而不是LIKE
  • 我可以调用sqlite3_create_function,但我不知道我是否可以在内部调用LIKE(CASE SENSITIVE).

sqlite optimization sql-like

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

SQL喜欢问题

有没有办法反转SQL Like运算符,以便它向后搜索一个字段?例如,我在一个看起来像这个"Xbox 360视频游戏"的字段中有一个值.如果我写下面的查询,它会返回结果.

SELECT id FROM table WHERE title like "%Xbox%Game%"
Run Code Online (Sandbox Code Playgroud)

但是,当我这样搜索时,它没有找到任何结果.

SELECT id FROM table WHERE title like "%Video%Xbox%"
Run Code Online (Sandbox Code Playgroud)

我需要它在任何方向匹配.我怎么能绕过这个?

mysql sql sql-like

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

mysql查询顺序与多个LIKE子句完全匹配

好的,我已经使用了一段时间了,我有点卡住了。

也许我正在做错所有事情!

基本上我有一个搜索字段的查询。一般的想法是根据LIKE %%选择结果,同时仍然将精确匹配放在第一位。

因此,例如,如果您搜索47,则我希望显示ID,姓氏或company_name中带有47的所有内容,但是ID号为47的结果应位于顶部,如果键入姓氏,则结果应相同。

请在下面查看我的代码,这可能有助于澄清我的问题。

SELECT id, 
IF(company_name IS NOT NULL AND company_name <> '', company_name, surname) AS name, 
first_name, country, phone1, isowner, isholidayrenter, isproholidayrenter, 
islongtermrenter, isprolongtermrenter, isprobuyer, isbuyer 
FROM clients 
WHERE id LIKE '$search' OR surname LIKE '$search' OR company_name LIKE '$search'
union all
SELECT id, 
IF(company_name IS NOT NULL AND company_name <> '', company_name, surname) AS name,      
first_name, country, phone1, isowner, isholidayrenter, isproholidayrenter,     
islongtermrenter, isprolongtermrenter, isprobuyer, isbuyer 
FROM clients 
WHERE id LIKE '%$search%' AND id NOT LIKE …
Run Code Online (Sandbox Code Playgroud)

php mysql sql-like

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

在SQLite(Python)中将变量字符串传递给LIKE

所以我一直在寻找,但我似乎无法找到一个看似简单且可能是常见问题的答案.在SQLite中,我有一个我想通过用户定义的搜索文本传递的查询.

search = xChatMessageSplit[2]

c.execute("SELECT * FROM captured WHERE Nick=? AND Name LIKE '%search%'",(xChatNick,search))
Run Code Online (Sandbox Code Playgroud)

显然语法或其他什么是不正确的,因为我收到错误,但我想基本上允许用户为字符串定义搜索词,"搜索".我该怎么做呢?我尝试使用REGEXP,但我似乎无法弄清楚如何定义函数,所以我想我会用LIKE,因为它已经在SQLite3中实现

python sqlite string variables sql-like

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

SQL-将数字(0)添加到现有条目(Varchar)中的特定位置,以将所有条目延长一

我想通过在前两位数之后添加0来延长几个事件编号.前两位数代表年份.防爆.我想将121023更改为1201023.所以我想通过添加0 in来将以12开头的所有事件编号(Varchar)更改为以120开头,以将所有事件编号延长一.

这是我到目前为止:

UPDATE EVENT 
SET EVNT_URI = '***what do I put here?***' 
WHERE EVNT_URI IN(SELECT EVNT_URI FROM EVENT WHERE EVNT_URI LIKE '12%')
Run Code Online (Sandbox Code Playgroud)

我这样做的原因是12表示年份,事件编号接近130000.所有事件编号都是6位数,我想通过在第一个数字之后加零来将它们更改为7位数代表年份.

sql sql-update sql-like

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

LIKE以数字结尾的匹配字符串

我有一个包含资源路径的列,如下所示:

/apiv3/widgets/100
/apiv3/widgets/search
/apiv3/widgets/new
Run Code Online (Sandbox Code Playgroud)

我试图得到一个LIKE或REG_EX,只会匹配以数字结尾的字符串

我尝试了一些例如:

LIKE '\/apiv3\/widgets\/[0-9]%'
LIKE '\/apiv3\/widgets\/[^0-9]%'
Run Code Online (Sandbox Code Playgroud)

如何匹配仅以任意长度的数值结尾的路径?

sql postgresql pattern-matching sql-like

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

为什么LIKE'%'不匹配''或NULL

基本上我有一组用户可以搜索的字段.所以我写了一个表格的查询:

SELECT *
  FROM my_addr_vw
 WHERE     fname LIKE :l_fname
  AND mname LIKE :l_mname
  AND lname LIKE :l_lname;
Run Code Online (Sandbox Code Playgroud)

当用户未将任何值传递给任何条件时,我假设为'%'.

这样做,如果一个记录有NULL或没有值,比方说,mname - 然后记录下降....什么是这个问题的一个很好的解决方案没有匹配!

sql oracle null sql-like

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

orientdb选择不返回所有顶点

我正在使用OrientDB studio来创建某种类型的顶点(NodeType1).我使用OrientDB studio创建了29个顶点,当我运行时:

select count(*) from NodeType1
Run Code Online (Sandbox Code Playgroud)

我得到29条记录.

但是,当我跑:

select * from NodeType1
Run Code Online (Sandbox Code Playgroud)

我得到了只有20条记录的清单.

有没有人遇到过这个?

graph-databases orientdb sql-like orientdb-2.1

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

SQL Server LIKE运算符与NCHAR列比较

我有以下代码.我不太明白只有第一个EXEC声明有结果.有人可以帮忙解释一下吗?

USE tempdb;
GO

IF OBJECT_ID('dbo.students') IS NOT NULL
    DROP TABLE dbo.students;
CREATE TABLE dbo.students
(
    id   INT NOT NULL IDENTITY PRIMARY KEY,
    name NCHAR(10)
);

INSERT INTO dbo.students(name)
SELECT c FROM(VALUES(N'ab'), (N'cd'), (N'ef'), (N'gh')) AS DATA(c);

SELECT *, DATALENGTH(name)FROM dbo.students;
GO

IF OBJECT_ID(N'dbo.check_address') IS NULL
BEGIN
    EXEC('CREATE PROCEDURE dbo.check_address AS SELECT ''to be replaced''');
END;
GO

ALTER PROCEDURE dbo.check_address @name NCHAR(10)
AS
BEGIN
    SELECT * FROM dbo.students WHERE name LIKE N'%' + @name + N'%';
END;
GO …
Run Code Online (Sandbox Code Playgroud)

sql sql-server string-comparison sql-like

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