验证数字列postgres



我尝试使用postgresql验证一个列其中列中的值为(0000-ASZAS)四个数值-五个字母

SELECT invoice_number,
CASE
WHEN invoice_number = '[0-9][0-9][0-9][0-9]-[A-Z][A-Z][A-Z][A-Z][A-Z]' 
THEN 'valid'
ELSE 'invalid'
END
from invoices;

也尝试LIKE代替=

对不起,错误的列customer_id与alpha数值Invoice_number是数字。谢谢你的更正

尝试~或similar_to。看到functions-matching

WHEN invoice_number ~ '[0-9][0-9][0-9][0-9]-[A-Z][A-Z][A-Z][A-Z][A-Z]' 

您可以使用~POSIX正则表达式运算符:

SELECT invoice_number,
CASE WHEN invoice_number ~ '^[0-9]{4}-[A-Z]{5}$' 
THEN 'valid'
ELSE 'invalid' END
FROM invoices;

我正在清理一个数据,并希望返回0行,这样它就不会拥挤的结果,所以这就是我所做的…

SELECT customer_id FROM invoices
WHERE customer_id !~ '[0-9][0-9][0-9][0-9]-[A-Z][A-Z][A-Z][A-Z][A-Z]';

w/c正好给了我想要的。与使用like or =相比,这是否同样有效?

最新更新