Estou tentando filtrar um número de série distinto de uma tabela e juntar duas tabelas. Atual meu código parece
SELECT DISTINCT ON (t1.serial_nbr) t1.*, q1.serl_nbr
FROM ( select
serial_nbr,
CASE
when substring(serial_nbr FROM 2 for 2) = '18' THEN
regexp_replace(serial_nbr,'(...)(\w{{5}})','\\1 \\2')
when substring(serial_nbr FROM 2 for 2) = '19' AND length(serial_nbr) = 9 THEN
regexp_replace(serial_nbr,'(...)(\w{{6}})','\\1 \\2')
ELSE serial_nbr END as serial
FROM controller_returns) as t1
LEFT JOIN dblink('{param_db}',
'SELECT DISTINCT ctrlr_serl_nbr,insert_ts
FROM ctrlr_basic_setng')
as q1(ctrlr_serl character varying,insert_ts timestamp without time zone)
on q1.ctrlr_serl_nbr = t1.serial
WHERE t1.serial_nbr~'^[ABCD]([AC0-9]{{1,9}})'
ORDER by t1.serial_nbr, substring(t1.serial_nbr from 2 for 2), substring(t1.serial_nbr from 1 for 1)
Estou usando postgreSQL e conectando usando psycopg2 em python.
Este é um código em evolução, mas notei que o número de série que estou recebendo não é realmente distinto. Às vezes, eu recebia casos como este 'A1800038' e 'A1800038\n'. O que estou tentando descobrir é como filtrar o serial com \n. Eu estava tentando fazer isso na cláusula WHERE fazendo '^[ABCD]([AC0-9][^\\n]{{1,9}})'
ou '^[ABCD]([AC0-9][^[:space:]]{{1,9}})'
mas nenhum dos dois funciona.
Qualquer ajuda seria muito apreciada.