ฉันใช้สิ่งต่อไปนี้เพื่อค้นหาสตริงในโพรซีเดอร์ที่เก็บไว้ของฉัน:
use DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'
การแก้ไขข้างต้นเป็นเรื่องง่ายเพื่อให้ค้นหาชื่อตารางในฐานข้อมูลเฉพาะ "DBname" หรือไม่?
ฉันใช้สิ่งต่อไปนี้เพื่อค้นหาสตริงในโพรซีเดอร์ที่เก็บไว้ของฉัน:
use DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'
การแก้ไขข้างต้นเป็นเรื่องง่ายเพื่อให้ค้นหาชื่อตารางในฐานข้อมูลเฉพาะ "DBname" หรือไม่?
คำตอบ:
ฉันใช้สิ่งนี้และทำงานได้ดี
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%%'
select name
from DBname.sys.tables
where name like '%xxx%'
and is_ms_shipped = 0; -- << comment out if you really want to see them
and is_ms_shipped = 0;
ดูเหมือนจะไม่ได้ทำอะไรมากนัก
หากคุณต้องการค้นหาในตารางทั้งหมดในฐานข้อมูลทั้งหมดทั้งเซิร์ฟเวอร์และรับเอาต์พุตคุณสามารถใช้โพรซีเดอร์ sp_MSforeachdb ที่ไม่มีเอกสาร:
sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''%Table_Names%'''
ฉันสมมติว่าคุณต้องการส่งชื่อฐานข้อมูลเป็นพารามิเตอร์ไม่ใช่แค่เรียกใช้:
SELECT *
FROM DBName.sys.tables
WHERE Name LIKE '%XXX%'
ในกรณีนี้คุณสามารถใช้ไดนามิก SQL เพื่อเพิ่ม dbname ลงในแบบสอบถาม:
DECLARE @DBName NVARCHAR(200) = 'YourDBName',
@TableName NVARCHAR(200) = 'SomeString';
IF NOT EXISTS (SELECT 1 FROM master.sys.databases WHERE Name = @DBName)
BEGIN
PRINT 'DATABASE NOT FOUND';
RETURN;
END;
DECLARE @SQL NVARCHAR(MAX) = ' SELECT Name
FROM ' + QUOTENAME(@DBName) + '.sys.tables
WHERE Name LIKE ''%'' + @Table + ''%''';
EXECUTE SP_EXECUTESQL @SQL, N'@Table NVARCHAR(200)', @TableName;
เพิ่มในคำตอบของ @ [RichardTheKiwi]
เมื่อใดก็ตามที่ฉันค้นหารายการตารางโดยทั่วไปฉันต้องการเลือกจากตารางทั้งหมดหรือลบทิ้ง ด้านล่างนี้คือสคริปต์ที่สร้างสคริปต์เหล่านั้นให้คุณ
สคริปต์การเลือกที่สร้างขึ้นยังเพิ่มคอลัมน์ tableName เพื่อให้คุณทราบว่าคุณกำลังดูตารางใด:
select 'select ''' + name + ''' as TableName, * from ' + name as SelectTable,
'delete from ' + name as DeleteTable
from sys.tables
where name like '%xxxx%'
and is_ms_shipped = 0;
ฉันรู้ว่านี่เป็นกระทู้เก่า แต่ถ้าคุณต้องการค้นหาแบบไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่:
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE Lower(TABLE_NAME) LIKE Lower('%%')
คุณยังสามารถใช้คำสั่งแสดง
show tables like '%tableName%'
ฉันต้องการโพสต์วิธีง่ายๆสำหรับทุกสคีมาที่คุณมี หากคุณใช้ MySQL DB คุณสามารถหาชื่อตารางทั้งหมดจากสคีมาของคุณและเพิ่มเงื่อนไข WHERE-LIKE ลงไปได้ คุณสามารถทำได้ด้วยบรรทัดคำสั่งปกติดังนี้:
SHOW TABLES WHERE tables_in_<your_shcema_name> LIKE '%<table_partial_name>%';
โดยที่tables_in_<your_shcema_name>
ส่งกลับชื่อSHOW TABLES
คำสั่งของคอลัมน์