Sql String Function - PullRequest
       1

Sql String Function

1 голос
/ 16 февраля 2011

Нужна помощь для выполнения простой задачи в строке sql, в моей таблице есть поле комментария (комментарии пользователя).

В моей процедуре я передаю параметр @input.Я хочу проверить, содержит ли строка строку @input, и если она содержит @input, добавить некоторый стиль в подстроку (такой же, как @input).

Например: если строка комментария похожа на - "iдобавил пользователя "Тестовый пользователь" и

@input - "tes"

Я хочу вывод как

i have added the user <span style="color:red">Tes</span>t user

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

Использование T-SQL (Microsoft SQL)

SELECT REPLACE(comment, @input, '<span style="color:red">' + SUBSTRING(comment, PATINDEX('%' + @input + '%', comment), len(@input)) + '</span>') as cmt
FROM thetable
WHERE comment LIKE '%' + @input + '%'

РЕДАКТИРОВАТЬ: ОК Еще более уродливо и все еще не проверено, но должно работать для вас.Теперь мы заменяем точный текст из строки обратно на замену.

ОБНОВЛЕНИЕ: Я только что проверил этот код, и он работает так, как вам нужно.Он находит Tes в строке, используя 'tes', и выводит Tes, как в исходной строке.

1 голос
/ 16 февраля 2011
select comment from table where comment like '%' + @input + '%'

Независимо от СУБД, в других СУБД (SQLserver, Oracle, Mysql) есть LIKE.В частности, мой ответ предполагает, что ваша БД является сервером Sql, поскольку я заметил использование @

РЕДАКТИРОВАТЬ: Чтобы получить тег <span>, я думаю, что вам, возможно, придется использовать регулярное выражениезамените входную строку тегом <span> в выходном результате.Лучше было бы сделать это в базовом коде, а не получать результаты запроса SQL с форматом.На сервере SQL вы также можете использовать функцию REPLACE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...