У нас есть база данных с большим количеством SP и просмотров, большинство из которых великолепны, но некоторые из них имеют изворотливые критерии (которые предыдущий сотрудник передал из MS Access с помощью программы перевода).В SSMS, как я могу найти строку, содержащую звездочку, какой-то текст, а затем еще одну звездочку?
Например, есть СФС critera как:
WHERE dbo.something NOT LIKE '*TEST*'
Лицо, что установить это означало:
WHERE dbo.something NOT LIKE '%TEST%'
Я нашел несколько уже используют этот метод, но я вам пришлось вводить точный текст. Замена слова TEST символом% не работает (% возвращает 0 записей, TEST возвращает некоторые записи).
USE [databasename]
SELECT @SEARCHSTRING = '*TEST*', @notcontain = ''
SELECT DISTINCT sysobjects.name AS [Object Name]
,case when sysobjects.xtype = 'P' then 'Stored Proc'
when sysobjects.xtype = 'TF' then 'Function'
when sysobjects.xtype = 'TR' then 'Trigger'
when sysobjects.xtype = 'V' then 'View'
end as [Object Type]
,USER_NAME(sysobjects.uid) AS trigger_owner
--,s.name AS table_schema
,OBJECT_NAME(parent_obj) AS table_name
FROM sysobjects,syscomments
WHERE sysobjects.id = syscomments.id
AND sysobjects.type in ('P','TF','TR','V')
AND sysobjects.category = 0
AND CHARINDEX(@SEARCHSTRING,syscomments.text)>0
AND ((CHARINDEX(@notcontain,syscomments.text)=0
or CHARINDEX(@notcontain,syscomments.text)<>0))
Я хотел бы знать, если кто-нибудь знает, каким образом я могу найти строку, во всех объектах, которая имеет звездочку, текст и другую звездочку. Thanks v much
Как раз так мы поняли, можете ли вы привести несколько примеров текста, который вы хотите сопоставить? И некоторые случаи краев того, что вы не хотите сопоставлять? – Bohemian
Пробовал ли вы ... ... syscomments.text LIKE N '% * TEST *%' 'или' ... syscomments.text LIKE N '% *% *%' '...? –
@GordThompson Привет, Горд, Да, я уже пробовал оба из них, но ничего не ответил, тогда как если я использую «% * TEST *%», я могу идентифицировать несколько хранимых процедур. –