首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对两个不同的列使用LIKE不会返回所需的结果

问对两个不同的列使用LIKE不会返回所需的结果
EN

Stack Overflow用户
提问于 2016-07-27 02:26:00
回答 2查看 41关注 0票数 0

我有一张桌子(承运商)我正在找。我使用LIKE来查询数据库。我正在查询一个表中的两列(cName、code),然后检查它是否处于活动状态。如果是,则返回结果。我的问题是,如果我搜索代码" ABCD“,我没有得到任何返回(这是正确的原因ABCD是不活动的。当我搜索ABCD (American Bu...)的运营商名称时。我得到一条返回的记录(这是错误的,因为客户处于非活动状态)。如何强制sql不显示非活动运营商?下面是我的sql:

代码语言:javascript
复制
SELECT carrierID, cName, code 
FROM carriers 
WHERE 
  (
    cName LIKE '%" & replace(q,"'","''") & "%' 
    OR code LIKE '%" & replace(q,"'","''") & "%'
  ) 
  AND active='True'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-27 02:51:57

假设您是在web服务器或客户端上构建SQL。

代码语言:javascript
复制
Declare mySQL as String = "SELECT carrierID, cName, code FROM carriers WHERE CharIndex('[getSearch]',cName) + CharIndex('[getSearch]',code) > 0 and active='True'"
mySQL = Replace(mySQL,"[getSearch]",replace(q,"'","''"))

仅供参考,CharIndex比LIKE更快

票数 1
EN

Stack Overflow用户

发布于 2016-07-27 02:45:10

我已经为您的查询创建了以下示例。只要以这种格式提供值,就可以得到预期的结果。我认为你的拼接有问题。您可以尝试使用SQL Profiler进行检查,以查看要发送到SQL server的内容。

代码语言:javascript
复制
CREATE TABLE carriers
(
    carrierID INT
    , cName     VARCHAR(50)
    , code      VARCHAR(50)
    , active    VARCHAR(5)
)
GO

INSERT INTO carriers VALUES (1, 'ABCD', 'XYZ', 'False')
INSERT INTO carriers VALUES (2, 'test', 'abcd', 'False')
INSERT INTO carriers VALUES (3, 'ABCD2', 'XYZ', 'True')
INSERT INTO carriers VALUES (4, 'test2', 'abcd2', 'True')

SELECT carrierID, cName, code
FROM carriers
WHERE
    (
            cName   LIKE '%ABCD%'
            OR code LIKE '%ABCD%'
    )
    AND active='True'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38597316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档