多列中的sql搜索[关闭]

Posted

技术标签:

【中文标题】多列中的sql搜索[关闭]【英文标题】:sql search in multi columns [closed] 【发布时间】:2016-05-11 11:53:57 【问题描述】:

我只想在 2016 年进行搜索。

select from products 
WHERE year="2016" 
and name like '%"& name &"%' 
or size like '%"& Size &"%'

【问题讨论】:

其实你想做什么? 双引号用于标识符,单引号用于文字。 (在您的情况下,"2016" 被读取为具有该名称的列...) 请提供样本数据,希望输出。 听起来name 列包含多个名称值,size 同上,即违反 1NF(更不用说存储为文本的时间数据)。 【参考方案1】:

在您的 or-ed 条件周围加上括号,并将年份的双引号更改为单引号(如 jarlh 所建议的那样):

select from products 
WHERE year='2016' 
and (
    name like '%"& name &"%' 
    or size like '%"& Size &"%'
)

哦,如果这是 VB.NET,并且您从参数或其他东西中获得了 nameSize,请确保您是 escaping them 以防止 SQL 注入(如果这还没有在其他地方完成) )。

【讨论】:

感谢您的回答。【参考方案2】:

不需要双引号或LIKE 中的任何引号。

SELECT *
FROM products 
WHERE year = '2016' 
AND (name LIKE '%name%' OR size LIKE '%size%'

【讨论】:

以上是关于多列中的sql搜索[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

SQL 多列排序

SQL Server中的索引搜索与索引扫描[关闭]

sql中的多列[关闭]

SQL Server 使用全文索引进行页面搜索

使用 Python 从 csv 文件中的字符串搜索中打印多列

使用 Spring JPA 规范进行多列搜索