如何在SQL Server表列中查找相同值的行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在SQL Server表列中查找相同值的行相关的知识,希望对你有一定的参考价值。
我有这样的查询:
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数据类型。
答案
检查这是否是您所期望的。
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
另一答案
您需要比较文本字段的校验和
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
以上是关于如何在SQL Server表列中查找相同值的行的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 sql loader 设置要加载到表列中的固定长度