回答

收藏

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
它不是特别有效,但是可以工作。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则