我需要计算所有存储过程中特定单词的出现次数。
即。 “place”这个词出现在特定数据库中的所有存储过程中多少次?
我试图用游标做到这一点,但我没有到达任何地方!
答案 0 :(得分:4)
我会以这种方式使用object_definition
function和sys.procedures
view:
declare @word varchar(128)
set @word = 'place'
select name, (len(object_definition(object_id)) - len(replace(object_definition(object_id), @word, ''))) / len (@word) as qty
from sys.procedures
where object_definition(object_id) like '%'+@word+'%' and type = 'P'
order by name
评论后添加,所有存储过程中出现所有特定字词:
declare @word varchar(128)
set @word = 'place'
select sum((len(object_definition(object_id)) - len(replace(object_definition(object_id), @word, ''))) / len (@word)) as qty
from sys.procedures
where object_definition(object_id) like '%'+@word+'%'
以下是工作(并在评论后更新)示例:http://sqlfiddle.com/#!3/a759c/7