我正在研究将输入值与存储记录进行比较的搜索部分。数据库具有像 AB 09 CD 1234 这样的值。我已经爆炸(带空格)输入字符串以匹配存储的值,但是当我给出像 AB09 CD 1234 这样的输入时,它不会产生高于记录的结果。
SELECT * FROM some_vehicle WHERE vehicle_number ILIKE E\'%AB09 CD 1234%'
db 中的车辆编号:AB 09 C D 1234
输入字符串:AB09 CD 1234
我希望通过输入字符串的组合来获得所有可能的场景。有没有办法在 PostgreSQL 中做到这一点?
“替换”功能能够消除字符串中的空格。PostgreSQL中是否有任何方法可以消除所有特殊字符以及空格。我正在尝试不同的正则表达式,例如
regexp_replace(vehicle_number,'[^a-z0-9\s]', '') 和 regexp_replace(vehicle_number,'[(|-|)|\:|\@|#|\$|*|.|!| \,]', '') 但它不起作用。
谢谢
试了几次才明白!非常接近它。"[^a-zA-Z0-9]" 模式消除了所有特殊字符,包括带有 'g' 选项的空格作为 PostgreSQL 中 regexp_replace 的第四个参数。