-3

我正在比较 SQL Server 2008 中同一表和同一列中的文本值,但结果有时不正确。可能相关的列信息:

Data type: text  
Full Text: True  
Collation: SQL_Latin1_General_CP1_CI_AS

在 100 个实际匹配中,我只得到 62 个。我在一些比较工具中比较了 LIKE 未拾取的字段值,它们 100% 相同,没有额外的空格、换行符等。

知道为什么文本 LIKE 并不总是有效吗?

SQL:

SELECT a.text as one, b.text as two
  FROM [Db].[dbo].[Table] a join
  [Db].[dbo].[Table] b on
  a.text LIKE b.text
4

1 回答 1

4

以下两个示例显示LIKE完全按预期工作。我怀疑你说“LIKE并不总是有效”的原因是因为你不知道如何LIKE工作。

这是一个应该发生一个匹配的示例:

CREATE TABLE #tmpTable
(
  [Text] TEXT
);

INSERT INTO #tmpTable VALUES ('Hello');

SELECT *
  FROM #tmpTable tmpTable1
       INNER JOIN #tmpTable tmpTable2
         ON tmpTable1.[Text] LIKE tmpTable2.[Text];

DROP TABLE #tmpTable;

Hello就像Hello,”你说。

这是一个不应该发生匹配的匹配:

CREATE TABLE #tmpTable
(
  [Text] TEXT
);

INSERT INTO #tmpTable VALUES ('[h]');

SELECT *
  FROM #tmpTable tmpTable1
       INNER JOIN #tmpTable tmpTable2
         ON tmpTable1.[Text] LIKE tmpTable2.[Text];

DROP TABLE #tmpTable;

“但[h] 就像[h]”你说。

LIKE不是相等运算符,它具有用于搜索单个字符、字符范围和可变字符数的特殊语法。如果您碰巧在使用该特殊语法(有意或无意)的列中为其提供文本,它将将该特殊语法视为字符匹配指令,而不是文字文本。

于 2012-10-04T11:52:21.403 回答