Соответствует символу, независимо от того, существует он в заявлении "Нравится"
Мне нужно подобное выражение, которое будет соответствовать символу, независимо от того, существует он или нет. Он должен соответствовать следующим значениям:
..."value": "123456"...
..."value": "123456"...
"...value":"123456"...
Это как заявление будет почти работать: LIKE '%value":%"123456"%'
Но есть такие значения, которые также будут соответствовать, но я не хочу возвращать:
..."value":"99999", "other":"123456"...
Выражение регулярного выражения, чтобы сделать то, что я хочу сделать, это 'value": *?"123456"'
, Мне нужно сделать это в SQL Server 2008, и я не верю, что в этой версии есть хорошая поддержка регулярных выражений. Как я могу сопоставить, используя подобное утверждение?
2 ответа
Удалить пробелы в вашем сравнении с REPLACE()
:
WHERE REPLACE(column,' ','') LIKE '%"value":"123456"%'
Может потребоваться двойная замена вкладок:
REPLACE(REPLACE(column,' ',''),' ','')
Я не думаю, что вы можете с таким оператором. Вы можете исключить те, с которыми вы могли бы соответствовать, например, если вы хотите убедиться, что он просто не содержит other
:
[field] LIKE '%value":%"123456"%` AND [field] NOT LIKE '%"other"%'
В противном случае я думаю, что вам придется выполнить некоторую обработку строки. Вы можете написать UDF, чтобы взять строку и проанализировать ее, чтобы найти значение для 'value' и сравнить на основе этого:
dbo.fn_GetValue([field], 'value') = '123456'
Функция может найти индекс '"' + @name + '"'
найдите следующий индекс кавычки и один после этого, затем получите строку между этими двумя кавычками и верните ее.