2015-01-16 3 views
-4
id  hosp_id provider_settings        
1  50411  {"e-invoice":"0"}          
2  129  {"e-invoice":"0","Document GroupId":"**test**"}   
3  50411  {"e-invoice":"0","Document GroupId":"**testtt**"}   
4  50360  {"e-invoice":"0","Document GroupId":"**yryyyy**"} 

Это моя структура таблицы.Как найти точную строку в базе данных Поле без

Я хочу найти идеально соответствовать «тест» строка/текст в «provider_settings» поле и запись выборки в соответствии с теста строки.

Но если мы ищем тест строку/текст, то никакая другая запись не должна быть извлечена как testtt строка/текстовых данных.

Пожалуйста, помогите.

+0

, где ваш код sniplet? –

+0

Разверните данные внутри своего db, один столбец для электронного счета, один для идентификатора группы документов. Затем используйте = для соответствия тесту, например: select * from mytable, где newColumn = 'test' –

+0

Если я обновляю существующий json с добавлением еще одного столбца, то? это поле «provider_settings» создается динамически. –

ответ

0

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

SELECT * FROM table_name WHERE BINARY column_name = 'test' 

заменить table_name и column_name, чтобы соответствовать вашим потребностям

0

Вы можете использовать этот запрос

SELECT * 
FROM v2_statement_provider_api_rel 
WHERE FIND_IN_SET('test', REPLACE(REPLACE(REPLACE(REPLACE(provider_settings, '}', ',') , ':', ',') , '{', ',') , '"', ',')) >0 
+0

Это ответ на мой вопрос. –

+0

Абид: вы можете принять свой ответ через пару дней, я думаю. – halfer

1

Если вы найдите «тест», и это часть json или какой-либо другой строки, помещенной в ваш db, есть другой способ найти ее без LIKE.

Кроме того, если у вас нет какой-либо специальной структуры этой строки, не существует способ получить только тест (не testtt или аналогичный)

Но, если ваша структура выглядит всегда как ->** value ** Тогда просто найдите его с помощью тех *, которые красиво начинают и заканчивают то, что вы ищете.

т.е.

выберите * из table_name где provider_settings LIKE '% ** тест **%'

+0

Вы также можете использовать кавычки как разделители. – halfer

Смежные вопросы