比较一个与另一个相似的列

时间:2011-01-15 15:59:29

标签: sql sql-server

我正在尝试编写一个Select语句,我可以看到一列是否与另一列相似。

tblNames 
ID    FullName                   FirstName
1     Mr. John Doe, CEO          John
2     Mr. Jake Doe, Exec        Jake
3     Mrs. Betty Smith, Chair     Jill

查询应返回:

3 | Mrs.Betty Smith, Chair | Jill

然而,我只返回表格中的每一行:

SELECT ID, FullName, FirstName
FROM tblNames
WHERE '%' + FirstName + '%' not like Fullname

有什么想法吗?

8 个答案:

答案 0 :(得分:25)

将地点反转到这样的地方:

Fullname not like '%' + FirstName + '%' 

答案 1 :(得分:10)

试试这个:

SELECT * FROM tblNames
WHERE  ISNULL( CHARINDEX (FirstName , FullName),0) = 0

CHARINDEX比LIKE子句更快(更高性能),因为它不必考虑通配符。上面包含少量行的示例数据不会显示性能优势,但是当数百万行时,CHARINDEX会表现得更好。

答案 2 :(得分:5)

这对我有用:

SELECT *
FROM `table`
WHERE `col1` NOT LIKE CONCAT('%', `col2`, '%')

在这里找到它: http://www.edmondscommerce.co.uk/mysql/compare-two-columns-in-mysql/

不知何故,它只能与concat-function(?)一起正常工作。

答案 3 :(得分:3)

将参数切换到LIKE子句中的WHERE

SELECT ID, FullName, FirstName
FROM tblNames
WHERE Fullname not like '%' + FirstName + '%'

通配符必须是第二个参数。

答案 4 :(得分:1)

看起来不错,除非您可能想要在您的位置切换订单:

WHERE Fullname not like '%' + FirstName + '%'

答案 5 :(得分:1)

Oracle在使用+时需要数字。对于字符串,请使用下面的samle:

private bool SaveVisitorPhoto()
{
byte[] visitorPhotoByte;
using (WebClient webClient = new WebClient())
{

    visitorPhotoByte = ImageUtility.ImageToByte(picVisitorPhoto.Image, ImageFormat.Png);
    string url = webServiceURL + "SaveVisitorPhoto/" + VisitPIN;
    webClient.UploadData(url, visitorPhotoByte);
    return true;
}}

[OperationContract]
[WebInvoke(UriTemplate = "SaveVisitorPhoto/{visitPIN}", ResponseFormat = WebMessageFormat.Json)]bool SaveVisitorPhoto(string visitPIN);

要将表的一列与另一个表的列进行比较,请执行以下操作

SELECT ID, FullName, FirstName
FROM tblNames
WHERE FullName like '%' || FirstName||'%'

答案 6 :(得分:0)

圆括号也可以解决这个问题。

SELECT ID, FullName, FirstName
FROM tblNames
WHERE ('%' + FirstName + '%') not like Fullname

答案 7 :(得分:0)

使用 Google BigQuery:

Fullname NOT LIKE ('%' || FirstName || '%')