如何根据charachter值的长度从sql表中获取唯一值

时间:2016-03-07 11:18:31

标签: sql database rdbms

这里我有两列,例如下面的示例column1& sql表中的column2,我希望根据表中的 column2 列值获取唯一值行
下面是虚拟表的例子

 Column1             Column2

----------         -------------

 1001                   ab
 1001                   abc
 1001                   abcd
 2001                   wxyz
 2001                   wxy
 2001                   wx

以上示例值从 a &从列2 中的 w 开始的另一个值
在相同值的字符长度的基础上,我想得到如下的结果
输出

 Column1                Column2

----------           -----------

1001                     abcd
2001                     wxyz

先感谢您的帮助:)

2 个答案:

答案 0 :(得分:2)

如果我理解正确,你想要最长的长度(当有两个长度相同时你没有说要做什么),但基本上你想要这样的东西:

SELECT * FROM YourTable
WHERE (column1,len(column2)) IN(select Column1,max(len(column2))
                                FROM YourTable
                                GROUP BY Column1)

答案 1 :(得分:1)

如果您正在查看第2列中的值是否包含在其他行中的某个位置,换句话说:如果您要查找的行包含自己唯一的字符组合,这可能是您的解决方案:

CREATE TABLE TestTable(Column1 INT,Column2 VARCHAR(100));
INSERT INTO TestTable VALUES
 (1001,'ab')
,(1001,'abc')
,(1001,'abcd')
,(2001,'wxyz')
,(2001,'xyz')
,(2001,'yz');

SELECT *
FROM TestTable
WHERE NOT EXISTS(SELECT 1 
                 FROM TestTable AS x 
                 WHERE x.Column1=TestTable.Column1 
                   AND LEN(x.Column2)>LEN(TestTable.Column2)
                   AND x.Column2 LIKE  '%' + TestTable.Column2  + '%'
                )

DROP TABLE TestTable;