首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> SQL Server 2005

SQL Server 查詢所有資料表中包含指定欄位名稱的方法、字串包含查詢技巧

     編輯:SQL Server 2005

一、查詢所有資料表中包含指定欄位名稱

SELECT O.name AS ObjectName, C.name AS ColumnName
FROM sys.columns C
INNER JOIN sys.objects O ON C.object_id = O.object_id
WHERE C.name LIKE '%ColumnName%'  -- 替換為欲查詢的欄位名稱
ORDER BY O.name, C.name;

二、字串包含查詢:欄位值包含某字串 vs 字串包含於欄位值

1. 欄位值包含字串 (常規 LIKE)

SELECT * FROM tb WHERE tb.name LIKE '%張三%';

缺點:會誤比對「秦張三八」等包含關鍵字的值。

2. 精確比對:欄位值為逗號分隔清單

若欄位儲存格式為 ,張三,李四,王五, (前後含逗號),可用:

SELECT * FROM tb WHERE tb.name LIKE '%,張三,%';

原理:逗號作為邊界,避免部分比對。

3. 實務陷阱:CheckBox 多選值存入時含空格

前端勾選產生 1, 21, 13 (逗號後有空格),直接 LIKE '%,21,%' 會失效。
解決:寫入資料庫前移除空格 → REPLACE(value, ' ', '') 得 1,21,13,再加前後逗號 → ,1,21,13,,查詢才精確。

小結

  • 中繼資料查詢用 sys.columns + sys.objects。
  • 逗號分隔欄位查詢:**前後加逗號 + 移除空格** 是精確比對關鍵。
  • 若資料量大、頻繁查詢,建議正規化拆分為關聯表,避免 LIKE 掃描效能問題。
  1. 上一篇文章: No
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved