我正在尝试编写一个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
有什么想法吗?
答案 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 || '%')