使用SQL时,=在WHERE子句中使用而不是LIKE?
没有任何特殊的操作员,LIKE并且=是一样的,对吧?
我有以下查询
SELECT * FROM table
WHERE tester <> 'username';
Run Code Online (Sandbox Code Playgroud)
我希望这能返回测试仪不是字符串的所有结果username,但这不起作用.我想我正在寻找Like操作员的反转,但我不确定?在我的搜索中,我找到了数字的解决方案(这是我从<>开始的地方),但这似乎不适用于字符串.
我有一些性能问题.
我有一张大约200万行的表.
CREATE TABLE [dbo].[M8](
[M8_ID] [int] IDENTITY(1,1) NOT NULL,
[APPLIC] [char](8) NOT NULL,
[NIVALERTE] [numeric](1, 0) NOT NULL,
[LOGDH] [datetime2](7) NULL,
[USERX] [char](20) NOT NULL,
[TACHE] [char](3) NOT NULL,
[PRG] [char](32) NOT NULL,
[DOS] [numeric](3, 0) NOT NULL,
[ERRNUM] [numeric](5, 0) NOT NULL,
[LOGTXT] [char](200) NOT NULL)
Run Code Online (Sandbox Code Playgroud)
我用C#和ADO.NET阅读它们
在管理工作室(SQL Server 2008 R2)中,使用该查询:
SELECT
M8.M8_ID, M8.APPLIC, M8.NIVALERTE, M8.LOGDH, M8.USERX, M8.TACHE,
M8.PRG, M8.DOS, M8.ERRNUM, M8.LOGTXT
FROM
M8 AS M8 WITH(NOLOCK)
WHERE
((M8.APPLIC LIKE 'DAV' ) )
ORDER BY
M8.LOGDH DESC, M8.M8_ID …Run Code Online (Sandbox Code Playgroud) 我有一个高级搜索界面,它将key:value对发送到我的flask应用程序.关键是要搜索的表中的列,值是要比较的条件.
下面是项目的示例查询,其中k是Projects表中的'tags'列,v是要搜索的标记.
projects = Projects.query.filter(getattr(Projects, k).like('%{}%'.format(v)))
Run Code Online (Sandbox Code Playgroud)
如果用户提交两个要搜索的标记,则v将是两个标记的列表.然后,我可以像这样查询数据库:
if len(v) == 2:
v1, v2 = v[0], v[1]
projects = Projects.query.filter(or_(
getattr(Projects, k).like('%{}%'.format(v1)),
getattr(Projects, k).like('%{}%'.format(v2)))
)
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法来执行"OR"查询,其中标记的数量(在此示例中)是可变的?
如何编写代码以便它可以处理2个标签或10个标签?
performance ×2
sql ×2
equals ×1
flask ×1
mysql ×1
python ×1
sql-like ×1
sql-server ×1
sqlalchemy ×1
t-sql ×1