Я начинаю работать в SQL и пытаюсь запустить такой запрос:
select id from "a_table" where col_value = 'ABCDEF';
Теперь в таблице a_table
, col_value
имеет как
'ABCDEF'
а также
'ABCD
EF'
(с возвратом каретки)
Мой вопрос заключается в том, как я могу построить свой запрос, чтобы, если я ищу 'ABCDEF'
в таблице, где присутствует ABCDEF, и может иметь или не иметь возврата каретки в нем.
Попробуйте использовать функцию replace
select id
from "a_table"
where replace(replace(col_value, '\r', ''), '\n', '') = 'ABCDEF'
И если вам нужно, вы можете обновлять bad
строки
update "a_table"
set
col_value = replace(replace(col_value, '\r', ''), '\n', '')
where col_value <> replace(replace(col_value, '\r', ''), '\n', '')
Но перед обновлением желательно проверить их, используя следующий запрос
select
id,
col_value,
replace(replace(col_value, '\r', ''), '\n', '') new_value
from "a_table"
where col_value <> replace(replace(col_value, '\r', ''), '\n', '')
Это может решить вашу проблему
select id from "a_table" where replace(col_value,'\n','') = 'ABCDEF';
Чтобы получить данные без возврата каретки, пожалуйста, попробуйте
select id from "a_table" where col_value = 'ABCDEF' and col_value NOT REGEXP "\r\n";