如何在SQL Server表列中查找相同值的行

问题描述 投票:0回答:2

我有这样的查询:

SELECT
   *
FROM 
   sub_aminer_paper
WHERE 
   p_abstract LIKE (
                    SELECT 
                       p_abstract
                    FROM 
                       sub_aminer_paper
                    GROUP BY 
                       p_abstract
                    HAVING 
                       COUNT(pid) > 1
                    )
AND 
   pid IN (784502,787096,789536)
ORDER BY
   pid

我想从中检索p_abstract列具有相同值的行,其中p_abstract中的text列的数据类型。执行此查询时,出现以下错误:

除非使用IS NULL或LIKE运算符,否则无法比较或排序text,ntext和image数据类型。

sql-server matching
2个回答
0
投票

检查这是否是您所期望的。

SELECT *
FROM sub_aminer_paper
WHERE pid IN (784502,787096,789536)
and CAST(p_abstract AS varchar(max)) in (
    SELECT CAST(p_abstract AS varchar(max))
    FROM   sub_aminer_paper
    WHERE pid IN (784502,787096,789536)
    Group BY CAST(p_abstract AS varchar(max))
    having count(*) > 1)
ORDER by pid

0
投票

您需要比较文本字段的校验和

WITH PAPERS AS(
    SELECT 
           pid,
           BINARY_CHECKSUM(p_abstract) as chksum
        FROM 
           sub_aminer_paper
), DOUBLES AS (
    SELECT 
        chksum
        ,qty = COUNT(*)
      FROM
         papers
      GROUP BY
        chksum
      HAVING 
        COUNT(*) > 1
)
SELECT *
    FROM 
        PAPERS P
        JOIN DOUBLES D ON P.chksum = D.chksum
© www.soinside.com 2019 - 2024. All rights reserved.