[SQL]查询某一个字段在某一段时期数据库中使用到的记录

本文分享了如何在特定时间段内整理数据库执行的SQL查询,包括查询语句、执行文本、执行时间和创建时间等关键信息,并通过模糊搜索字段来定位特定内容。提供了强大的数据库操作方法,适用于提高效率和解决问题。

有些时候我们经常需要哪里用到了一些表,又或者什么时候执行了某一个存储过程。整理出了在某段时期内数据库执行的sql查询。也可以查询到数据库中某些字段的存放处。很好很强大,希望能帮到大家~

SELECT TOP 1000 
--创建时间 
QS.creation_time, 
--查询语句 
SUBSTRING(ST.text,(QS.statement_start_offset/2)+1, 
((CASE QS.statement_end_offset WHEN -1 THEN DATALENGTH(st.text) 
ELSE QS.statement_end_offset END - QS.statement_start_offset)/2) + 1 
) AS statement_text, 
--执行文本 
ST.text, 
--执行计划 
QS.total_worker_time, 
QS.last_worker_time, 
QS.max_worker_time, 
QS.min_worker_time 
FROM 
sys.dm_exec_query_stats QS 
--关键字 
CROSS APPLY 
sys.dm_exec_sql_text(QS.sql_handle) ST 
WHERE 
QS.creation_time BETWEEN '2013-12-0309:00:00' AND '2014-12-03 11:00:00' 
AND ST.text LIKE '%BK_TSESTATU%' 
ORDER BY 
QS.creation_time 


其中下面一段代码中BK_TSESTATU就是你要模糊搜索的字段

ST.text LIKE '%BK_TSESTATU%' 

数据库查询中,若需要查找某个字段包含特定字符串的所有记录,可以使用 `LIKE` 运算符结合通配符 `%` 来实现。`%` 通配符用于匹配任意数量的字符,因此可以用于模糊匹配字段中是否包含目标字符串。 例如,若需查询字段 `column_name` 中包含字符串 `'版本'` 的所有记录,可以使用如下 SQL 语句: ```sql SELECT * FROM table_name WHERE column_name LIKE '%版本%'; ``` 此语句将返回 `column_name` 字段中包含 `'版本'` 的所有行,无论该字符串出现在字段值的任何位置。这种查询方式适用于字段存储的是普通字符串或多个值拼接的情况[^1]。 在某些场景中,字段值可能是多个值拼接而成的字符串,如 `'0,1,2,3,4,5'`,此时若希望查询字段是否包含 `'1,2,5'` 中的任意一个值,可以使用类似的方法,但需注意匹配的准确性。例如,若直接使用 `LIKE '%1%'`,可能会错误匹配到包含 `'11'` 的情况。一种可行的方案是将查询字符串中的分隔符替换为 `%`,从而实现模糊匹配: ```sql SELECT * FROM table_name WHERE column_name LIKE '%1%2%5%'; ``` 该查询可以匹配字段中包含 `'1'`、`2` 和 `'5'` 的记录,但无法保证顺序和组合的唯一性,因此在实际应用中需要根据业务逻辑进行进一步筛选和处理[^2]。 若需在整个数据库范围内查找包含特定字符串的字段,可以编写存储过程或脚本遍历所有表和列,并使用类似的 `LIKE` 查询进行匹配。例如,可以使用游标遍历所有表和字段,并对每个字段执行 `LIKE` 查询,以判断其是否包含目标字符串: ```sql SET @searchString = '%版本%'; SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'your_database' AND COLUMN_NAME IN ( SELECT DISTINCT COLUMN_NAME FROM your_table WHERE your_column LIKE @searchString ); ``` 此查询将遍历指定数据库中的所有表,并检查每个字段是否包含目标字符串,从而实现跨表、跨字段的模糊匹配[^3]。 ### 相关问题 1. 如何在 SQL使用 `LIKE` 运算符进行模糊查询? 2. 如何在字段存储多个值时进行精确匹配查询? 3. 如何在整个数据库中查找包含特定字符串的字段? 4. 如何防止 `LIKE` 查询中的误匹配问题? 5. 如何在 MySQL 中动态遍历所有表和字段进行查询
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值