SQL LIKE仅使用全名
在我的一个sp中,我有以下代码行SQL LIKE仅使用全名,sql,sql-like,Sql,Sql Like,在我的一个sp中,我有以下代码行 select distinct (a.itemid), a.itemcode, v.itemdescription from aitem a INNER JOIN vwitemdescription v ON a.itemID = v.itemID WHERE a.active=1 ----------------------------------------- AND (@ItemDesc like '%'+ a.itemdescription
select distinct (a.itemid), a.itemcode, v.itemdescription
from aitem a
INNER JOIN vwitemdescription v ON a.itemID = v.itemID
WHERE a.active=1
-----------------------------------------
AND (@ItemDesc like '%'+ a.itemdescription +'%')
-----------------------------------------
如果我在完整描述中给出@ItemDesc值,我会得到值,如果我在半个描述中给出@ItemDesc值,我不会得到任何回报
例如:
如果我给
@ItemDesc = 'Cow Dung - '
我得到的结果是
---------------------------------------
|itemid | itemcode | itemdescription |
--------------------------------------
| 63 | 40-17005 | Cow Dung - |
---------------------------------------
即使我将字符串剪切为@ItemDesc='Cow Dung'
,也会得到相同的结果
但是如果我把它剪切成@ItemDesc='Cow'
或者只剪切到一个字符,我就不会得到任何结果
即使我只在其中输入一个字符,我也要加载该项
我的代码有什么问题吗?如何正确操作?您需要切换
表达式中的项目,如表达式:
AND a.itemdescription LIKE '%' + @ItemDesc + '%'
使用此逻辑,itemsdescription
的任何子字符串都将匹配。例如,以下为真实情况:
AND `Cow Dung - ` LIKE '%Cow%'
以下是完整的查询:
SELECT DISTINCT
a.itemid, a.itemcode, v.itemdescription
FROM aitem a
INNER JOIN vwitemdescription v
ON a.itemID = v.itemID
WHERE
a.active = 1 AND
a.itemdescription LIKE '%' + @ItemDesc + '%';
您需要切换表达式中的项目,如
表达式:
AND a.itemdescription LIKE '%' + @ItemDesc + '%'
使用此逻辑,itemsdescription
的任何子字符串都将匹配。例如,以下为真实情况:
AND `Cow Dung - ` LIKE '%Cow%'
以下是完整的查询:
SELECT DISTINCT
a.itemid, a.itemcode, v.itemdescription
FROM aitem a
INNER JOIN vwitemdescription v
ON a.itemID = v.itemID
WHERE
a.active = 1 AND
a.itemdescription LIKE '%' + @ItemDesc + '%';
比较变量应始终位于语句的右侧。您的新查询应如下所示
select distinct (a.itemid), a.itemcode, v.itemdescription
from aitem a
INNER JOIN vwitemdescription v ON a.itemID = v.itemID
WHERE a.active=1
--changed condition start
AND (a.itemdescription like '%'+ @ItemDesc +'%')
--changed condition end
比较变量应始终位于语句的右侧。您的新查询应如下所示
select distinct (a.itemid), a.itemcode, v.itemdescription
from aitem a
INNER JOIN vwitemdescription v ON a.itemID = v.itemID
WHERE a.active=1
--changed condition start
AND (a.itemdescription like '%'+ @ItemDesc +'%')
--changed condition end
你用哪一种?“SQL”只是一种查询语言,而不是特定数据库产品的名称(并且您的问题包含非标准SQL)。请为您正在使用的数据库产品添加一个标记DISTINCT
是SELECT DISTINCT
的一部分,并适用于整个选定行。跳过那些多余的括号以使查询更清晰,即只需选择不同的a.itemid、a.itemcode、
?“SQL”只是一种查询语言,而不是特定数据库产品的名称(并且您的问题包含非标准SQL)。请为您正在使用的数据库产品添加一个标记DISTINCT
是SELECT DISTINCT
的一部分,并适用于整个选定行。跳过那些多余的括号以使查询更清晰,即只需执行选择不同的a.itemid,a.itemcode,…
“始终”有点太强,可能存在所述顺序正确的情况。但是你是对的,考虑到这些例子,顺序应该被切换。谢谢你是对的,我已经在当前案例的基础上发布了。“总是”有点太强了,可能有些情况下所陈述的顺序是正确的。但是你是对的,考虑到这些例子,订单应该被切换。谢谢你是对的,我已经在当前案例的基础上发布了。