SQL LIKE'%value%'的反函数
技术问答
330 人阅读
|
0 人回复
|
2023-09-14
|
我有一个包含域名的MySQL表:+ V' `5 f5 R4 i
+----+---------------+ G% j* a2 B* O4 A1 [
| id | domain |
( S# E% z6 I4 V0 G0 Y+----+---------------+. U V1 ]$ v% c7 O
| 1 | amazon.com |$ a2 i5 A! P- h5 I g& T# {! K
| 2 | google.com | ^* {" J& v2 f* U% n. A
| 3 | microsoft.com |
( E# f# r( H; x! a2 p2 a& N| | ... |/ g- r% Q' Q; }5 h
+----+---------------+
8 l/ i3 Z& y ]4 z$ N! d我希望能够在此表中搜索完整的主机名(即“ www.google.com”)。如果是表格包含完整URL的相反方法,我将使用:
7 ~6 y) E9 h2 USELECT * FROM table WHERE domain LIKE '%google.com%'! |- p, v" Q) ~) H: k; Z, B
但是,倒数并不是那么简单。我目前的想法是搜索完整的主机名,然后逐步剥离域的每个部分,然后再次搜索。(即先搜索“ www.google.com”,然后搜索“
, G9 d% S# N' i' {; n. X4 qgoogle.com”); G6 j% j% C0 _3 Z
这不是特别有效或巧妙的方法,必须有更好的方法。我敢肯定这是一个普遍的问题,而且无疑很容易解决!6 `% l8 }1 @ K) I5 N9 S
; x8 a: g) {) @: ~解决方案:
4 i9 c4 y+ \) U5 p% }& n ; d% U6 \9 ~# B& C7 ^
) V! j: x* R2 q5 Y
7 D$ h u3 e5 ~( M$ R
您也可以使用右侧的列:( c7 p) \) c" E4 @/ V+ T
SELECT domain FROM table WHERE 'www.google.com' LIKE CONCAT('%', domain);- O: {1 d/ p, o h
或者
4 J% u; k3 g0 f8 W8 XSELECT domain FROM table WHERE 'www.google.com' LIKE CONCAT('%', domain, '%');* L- X g0 Z* K7 \! i7 X
它不是特别有效,但是可以工作。 |
|
|
|
|
|