iT邦幫忙

2

請問如何在 MySQL 資料庫中找到某字串?

各位先進,想請問一下,如何在某個資料庫中找到某特定字串呢?

例如:我想在ABC資料庫中,找「林志玲」這個名字;但我不知道它在哪個資料表的哪個欄位中。
以往我的作法是先整個倒出成一個.sql檔,再用文字編輯器去尋找該字串,再往上找它屬於哪一個資料表...(土法煉鋼啦)

今天突然想到,可以請教各位熱心的先進,一定有更快的方法...
對了,小弟手上有的工具是 Navicat,以及 phpMyAdmin 這兩種,都是有圖形及指令介面的,先謝謝各位的回答,謝謝!

看更多先前的討論...收起先前的討論...
mysql的跨庫多表查詢@@..
mssql是知道怎麼找~可以直接下sql語法...
但mysql有興趣看看那位高手是怎麼找的@@
小魚 iT邦高手 1 級 ‧ 2018-07-02 21:02:11 檢舉
連哪個資料表哪個欄位都不知道...這要找很久吧...
不過我好奇MS-SQL是怎麼找的?
https://ithelp.ithome.com.tw/questions/10091656

運用 information_schema, 你的情形比較進階, 自己研究一下,就能組出來了.
MSSQL的所有表格查詢~
這是從我以前線上資料庫管理系統的片斷SQL

所有表格
select a.*
from sysobjects as a
where xtype = 'U'
and name <> 'dtproperties'
order by Name

該表格的所有欄位
select a.name
,a.xusertype
,isNull(a.Length,0) as Length
,isNull((select name from systypes as b where b.xusertype = a.xusertype ),'') as Type_Names
,(case when a.colid = b.keyno then 1 else 0 end) as Key_yn
from syscolumns as a
left join sysindexkeys as b on a.id = b.id
where a.id = 表格ID

針對類型是varchar或nvarchar類型~

然後你針對以上
搜尋林志玲就知道所在資料庫、表格、欄位~

補充~
select a.*
from A資料庫.dbo.sysobjects as a
where xtype = 'U'
and name <> 'dtproperties'
order by Name

select a.*
from B資料庫.dbo.sysobjects as a
where xtype = 'U'
and name <> 'dtproperties'
order by Name
terryliu iT邦新手 5 級 ‧ 2018-07-03 10:31:15 檢舉
@純真的人 謝謝回覆,敝公司的系統是 MySQL 的... (對了,小弟沒有跨庫,只是跨表)
@一級屠豬士 謝謝您,拜讀大作中!
MySQL的跨庫多表SQL方式 我已經研究出來@@~
不過要看暐翰大大是否已經給你~有的話~我就不用給了唷~
參考連結
https://ithelp.ithome.com.tw/articles/10198629

2 個回答

4
暐翰
iT邦大師 4 級 ‧ 2018-07-02 21:51:05
最佳解答

可以先參考看看我之前寫的文章
小程式-Oracle&C#全表格查詢搜尋單一值 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天


主要原理
1.運用跟一級屠豬士大大說的一樣information_schema表格取得所有表格的欄位資料
2.拼接sql並運行判斷有沒有資料 (使用or來拼接一次查詢)
3.假如使用select count(1) from 表格判斷會遇到效能問題,要使用exists

總結上述三點會得到的sql語句:

select case when (
    exists(
        select null
        from {表格名稱xxx} 
        where {欄位名稱A} = {搜尋的值} or {欄位名稱B} = {搜尋的值} or {欄位名稱C} = {搜尋的值} .....
    )
) then 1 else 0 end value 

假如晚一點還沒有高手大大解決
我再寫一個Mysql版本給你

terryliu iT邦新手 5 級 ‧ 2018-07-03 10:36:13 檢舉

謝謝暐翰大大,有看懂您表達的大概邏輯了,只是實作上還有一段距離,若您得空,還望惠賜語法,感謝!

暐翰 iT邦大師 4 級 ‧ 2018-07-06 18:31:17 檢舉
terryliu iT邦新手 5 級 ‧ 2018-07-09 09:31:07 檢舉

謝謝暐翰大大的協助,感謝!

0
fuzzylee1688
iT邦新手 4 級 ‧ 2018-07-03 08:46:00

趕快去做Data Inventory比較實在一點吧, 做好一次,以後就輕鬆多了.

我要發表回答

立即登入回答