mugamath Ответов: 5

Как запрос


Всем привет,

Имя таблицы: sp_text
Имя столбца : obj_Text

В этом столбце все хранимые процедуры будут сохранены в виде текста.

Мне нужно получить все хранимые процедуры, которые имеют raiserror и %d в raiserror.

select * from sp_Text where obj_Text like '%raiserror%d%'


Я попробовал выполнить вышеприведенный запрос. Sps извлекаются
которая инструкция. Но мне нужен только sps, в котором есть raiserror и %d.

Помоги мне

Заранее спасибо
Исмаил

jerrykid

хороший вопрос, 5+

5 Ответов

Рейтинг:
38

Venkatesh Mookkan

Я надеюсь, что так и будет.

SELECT * FROM (SELECT * FROM sp_Text WHERE obj_Text like '%raiserror%') result WHERE result.obj_Text LIKE '%d'


Редактировать:
Исправьте опечатку в заявлении.


Отметьте это как ответ, если это вам поможет


mugamath

по-прежнему ничего Венкатеш.

jerrykid

Следует выбрать * из (выбрать * из sp_Text где объектов obj_text, как '%инструкция raiserror%') результат, объектов obj_text, как '%Д'

jerrykid

добрый Венкатеш Муккан, 5+

Venkatesh Mookkan

@jerrykid спасибо.

@mugamath:
Я исправил SQL. Теперь это должно сработать.

mugamath

вентакеш это тот, который вы дали ранее. никакая разница.

Venkatesh Mookkan

Ранее результат.объектов obj_text это с ошибками, как Расул.объектов obj_text

mugamath

да ладно. но ответа все равно не было.

Рейтинг:
36

Hiren solanki

Я нашел все ответы, а теперь позвольте мне попробовать, если я могу вам помочь.

В шаблоне сопоставления SQL-запросов есть так называемый "Escape-символ", например, если ваш символ соответствует подстановочному символу, то вы можете его экранировать.

Теперь у вас возникает та же проблема, что и ваш символ " % " находится внутри строки, и вы хотите сопоставить его.

Так что здесь много экспериментов MSDN[^] рассказывая.

Ниже приведен пункт вашего решения по связанной статье.

You can search for character strings that include one or more of the special wildcard characters. For example, the discounts table in a customers database may store discount values that include a percent sign (%). To search for the percent sign as a character instead of as a wildcard character, the ESCAPE keyword and escape character must be provided. For example, a sample database contains a column named comment that contains the text 30%. To search for any rows that contain the string 30% anywhere in the comment column, specify a WHERE clause such as WHERE comment LIKE '%30!%%' ESCAPE '!'. If ESCAPE and the escape character are not specified, the Database Engine returns any rows with the string 30.
Если после escape-символа в шаблоне LIKE нет символа, то шаблон недопустим, и LIKE возвращает FALSE. Если символ после escape-символа не является подстановочным знаком, то escape-символ отбрасывается, а символ, следующий за escape-символом, рассматривается как обычный символ в шаблоне. Это включает в себя знак процента (%), подчеркивание ( _ ) и левую скобку ([) подстановочных знаков, когда они заключены в двойные скобки ([ ]). Кроме того, внутри символов двойной скобки ([ ]) можно использовать escape-символы и экранировать каретку (^), дефис ( - ) и правую скобку (]).


Прочтите там полную статью, и вы наверняка получите ответ.


mugamath

он прекрасно работает на 30%. Но мне нужно получить %30. я попробовал следующий код
select * from (select * from sp_text where obj_Text like '%raiserror%')результат
где obj_Text типа '%d/%%'

Не удалось получить результат

Рейтинг:
20

Corporal Agarn

Здравствуйте, если вы используете SQL Server, то смотрите Сопоставление шаблонов в условиях поиска[^] смотреть Поиск подстановочных знаков


Рейтинг:
1

Rajesh Anuhya

Как это так?.,

Имя таблицы : CUSTOMER_MASTER
имя столбца : "имя"

одна строка в моей таблице имеет значение "RA%JESH"

Теперь это мой вопрос

select * from CUSTOMER_MASTER cm where replace(cm.FIRSTNAME,'%','~') like '%~J%';


Добавлено для текстового типа данных
select * from CUSTOMER_MASTER cm where replace(convert(varchar,cm.FIRSTNAME),'%','~') like '%~J%'


Дайте мне знать, если это поможет вам

Спасибо и с уважением
Раджеш Б


mugamath

спасибо, Раджеш. Функция Replace не принимает тип данных text, так как в моем случае obj_text имеет тип данных text

Rajesh Anuhya

изменить заменить(см.Имя,'%','~') на замену(конвертировать(тип varchar,см.Имя),'%','~')

здесь firstname-это текстовый тип данных

mugamath

прости, Раджеш. и все же нет. ничего не получается

Rajesh Anuhya

это работает для меня.., (с текстовым типом данных).., вы можете разместить свой запрос здесь..

mugamath

нужно извлечь текст, который содержит %d в нем.

выберите * из sp_Text a, где
заменить(конвертировать(тип varchar,а.объектов obj_text),'%','~') как '%~ф%'

Rajesh Anuhya

выберите * от sp_Text где заменить(конвертировать(тип varchar,а.объектов obj_text),'%','~') как '%~Д%'

вы должны поставить "d" вместо "s"...

mugamath

да, но посмотрите, например. если мне недостаточно , я должен использовать %s право. я подтвердил , что %s доступен в тексте, но не смог восстановить данные.

Рейтинг:
1

velmahesh

Привет, Исмаил:Роза:

попробуйте выполнить следующий код. это будет хорошая работа..

Выберите * из sp_text, где obj_Text, например '%'+@keyword +'%'


mugamath

я попробовал это сделать.
выберите * из sp_text, где obj_Text, например '%' + '%d' + '%'

но ничего не произошло. на самом деле в моем тексте %d будет там. мне нужно получить весь текст, в котором есть %d.