【问题标题】:how to use like and substring in where clause in sql如何在sql的where子句中使用like和substring
【发布时间】:2016-11-14 12:38:47
【问题描述】:

希望有人可以帮助我并为我解释这个查询, 为什么第一个查询返回结果,而第二个没有:

编辑: 第一个查询:

select name from Items where name like '%abc%'

第二个查询:

 select name from Items where name like substring('''%abc%''',1,10)

为什么第一个返回结果,而第二个什么都不返回

substring('''%abc%''',1,10)='%abc%'

如果这背后有逻辑,是否有另一种方法可以做类似第二个查询的事情,

我的porpuse是将'''abc'''之类的字符串转换为'abc'以便使用like语句,

【问题讨论】:

  • 这两个查询没有任何共同之处。第一个返回字符串的一部分,本质上是一个无操作,因为字符串 less 长度小于 10 个字符。第二个没有任何意义——如果你想找到包含abc的字符串,就写LIKE '%abc%'。现在,您似乎在要求以 ' 开头和结尾并包含 abc 的字符串?
  • 请解释你真正想要做什么。 BTW substring 返回字符串的一部分,它不会替换任何内容。
  • @PanagiotisKanavos 谢谢你的回答,我知道他们没有共同点,我现在要更新
  • 更好地解释你真正想要做什么以及为什么你不能只写LIKE '%abc%'
  • @PanagiotisKanavos 现在清楚了吗?

标签: string tsql substring where-clause sql-like


【解决方案1】:

您可以连接字符串以形成您的LIKE 字符串。要修剪字符串的前 3 个和后 3 个字符,请使用 SUBSTRINGLEN 函数。以下示例假定您的匹配字符串名为 @input,并以 3 个引号开始和结束,需要删除这些引号才能找到匹配项:

select name from Items where name like '%' + SUBSTRING(@input, 3, LEN(@input) - 4) + '%'

【讨论】:

  • 我会测试这种方法并回来
  • 这几乎是我在运行此 select 时要寻找的东西,但是当我使用它时,例如:exec sp_executesql N' select name from Items where name like ''%'' + SUBSTRING(@input, 3, LEN(@input) - 3) + ''%''' 不运行
  • 它也可以我必须上传我的查询,因为它包含一些子查询,所以在 AS 附近给出错误语法错误,请明天重新阅读这个问题
猜你喜欢
  • 2012-01-07
  • 1970-01-01
  • 2012-12-23
  • 2017-08-30
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
相关资源
最近更新 更多