SQL Подбирает строку с двумя пробелами в строке в предложении LIKE - PullRequest
2 голосов
/ 22 сентября 2010

Моя база данных содержит следующие строки наряду с другими похожими

Old Type:  New Type: IRP User: dls0835
Old Type: BASE PLATE New Type: IRP User: ter2344

Я пытаюсь не возвращать первый тип строки, но по-прежнему возвращать второй тип строки.

Обратите внимание, что в первой строке нет текста после «Old Type:» и что между ним и словом «New Type» фактически есть два пробела.

Во второй строке после «Старый тип:» есть текст, но этот текст меняется в зависимости от того, что выбрал пользователь.

Также могут меняться «Новый тип» и «Пользователь».

Я пытаюсь не возвращать ни одной записи, в которой после текста «Старый тип:» нет текста.

Я попробовал следующее:

n.[text] NOT LIKE 'Old Type:  New Type: %'

Это по-прежнему возвращает пустые по некоторым причинам. Я думаю, что это может быть связано с наличием двух пробелов между старым типом и новым типом, когда старый тип пуст. ????

Спасибо!

Ответы [ 4 ]

2 голосов
/ 22 сентября 2010

Как насчет:

WHERE CHARINDEX('Old Type:  New Type:', n.[text]) = 0
2 голосов
/ 22 сентября 2010

Попробуйте это:

where patindex('%New Type:%', n.text) > 12
0 голосов
/ 22 сентября 2010

вот пример того, что я бы сделал

declare @table table (String varchar(max))

insert into @table values ('Old Type:  New Type: IRP User: dls0835 ')
insert into @table values ('Old Type: BASE PLATE New Type: IRP User: tdl2921 ')


;with cte as
(
select
    SUBSTRING(string,CHARINDEX('Old Type: ',String)+10,CHARINDEX('New Type: ',String)-(CHARINDEX('Old Type: ',String)+10)) as OldType,
    SUBSTRING(string,CHARINDEX('New Type: ',String)+10,CHARINDEX('IRP User: ',String)-(CHARINDEX('New Type: ',String)+10)) as NewType,
    right(string,len(string)-(CHARINDEX('IRP User: ',string)+8)) as IRPUser
from @table
)
select
*
from cte
where OldType<>''
0 голосов
/ 22 сентября 2010

Мое первоначальное предложение состоит в том, чтобы изменить компоновку таблицы, чтобы упростить задачу.

Иногда изменение угла приближения является самым простым решением.

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