用户搜索输入为UNIX
我需要从表中查找有效记录。
其中包含如下随机列表:
abnormalURL field | Unique-Company
-----------------------------------------------
www.PDP11UNIX.com | company1
PDP9UNIXPDP11.co.uk | company2
.UNIXPDP11.be | company3
git://UNIXPDP11.com | company4
http://PDP11UNIX | company5
ssh://UNIXPDP11 | company6
www.UNIXPDP11.1234.-.0.9.8.be | company7
Grand father telling story, | company8
once upon a time there was
a UNIX getting born.
UNIXPDPV11.a.hosted.com | company9
www.UNIX.org | company10
b.UNIX.x.org | company11
http://UNIX.be | company12
http://www.UNIX.com | company13
UNIX.nl | company14
UNIX.a.org | company15
UNIX.b.org | company55
http://www.UNIX.PDP11.org/ | company16
http://www.PDP11.UNIX.org/ | company17
我使用LIKE % %
但在许多其他随机记录中这是不正确的。我也尝试了LIKE 'UNIX%'
,这也是输出不正确。
* 我的预期输出仅为上述列表中的2,应显示类似于以下内容:*
www.UNIX.org | company10
http://UNIX.be | company12
http://www.UNIX.com | company13
UNIX.nl | company14
如果搜索结果为UNIX.a
,那么它将显示如下(仅限):
UNIX.a.org | company15
如何使用SQL / C执行此操作?
答案 0 :(得分:2)
行。这是一个非常疯狂的猜测。我假设当用户输入“UNIX”时,您希望所有条目都以其中一个开头:
http://UNIX
http://www.UNIX
www.UNIX
或只是
UNIX
并以其中一个结束:
UNIX.com
UNIX.org
UNIX.be
UNIX.nl
如果我的猜测是正确的,那么这样的事情可能会起作用(在MySQL中):
SELECT t.*
FROM
( SELECT 'http://' AS prefix UNION ALL
SELECT 'http://www.' UNION ALL
SELECT 'www.' UNION ALL
SELECT 'ftp://' UNION ALL
SELECT ''
) pre
CROSS JOIN
( SELECT '.com' AS suffix UNION ALL
SELECT '.org' UNION ALL
SELECT '.nl' UNION ALL
SELECT '.be' UNION ALL
SELECT '.gr'
) s
JOIN
TableX t
ON t.abnormalURL = CONCAT(p.prefix, @userInput, s.suffix)