在另一列中查找子字符串

时间:2016-06-24 16:55:45

标签: sql tsql sql-server-2012

我要做的是检查特定列是否包含来自另一个特定列的子字符串。

我目前的代码是;

<!DOCTYPE html>
<html>
  <head>
    <script src="/bower_components/angular/angular.js"></script>
    <script src="/bower_components/angular-animate/angular-animate.js"></script>
    <script src="/bower_components/angular-bootstrap/ui-bootstrap.js"></script>
  </head>
  <body>
      ....
  </body>
</html>

我需要查看SELECT * FROM myLog WHERE header LIKE SUBSTRING(body,1,5) 列的前5个字符是否在同一行的body列中。

1 个答案:

答案 0 :(得分:0)

您错过了%符号,这是一张在LIKE子句中与WHERE一起使用的外卡。此处的子句指示header应包含body开头的前5个字符。

SELECT * 
FROM myLog
WHERE header LIKE '%' + SUBSTRING(body,1,5) + '%'

您也可以使用LEFT功能代替SUBSTRING

SELECT * 
FROM myLog
WHERE header LIKE '%' + LEFT(body,5) + '%'
  

查询运行但不返回任何结果,但是如果我运行更具体的内容,例如; SELECT body,header FROM myLog WHERE header LIKE&#39;%d6453%&#39 ;;它会返回一些行。这些行也有d6453作为正文的前5个字符

听起来你可能在body列中有空格。尝试将LTRIM添加到查询中,这样可以删除左侧的空白区域。

SELECT header, body
FROM myLog
WHERE header LIKE '%' + LEFT(LTRIM(body),5) + '%'