Postgresql o转义用户输入。否则,用户可以输入与任何内容匹配的字符,如%。@MattDeLeon Hi。说得好。但我只想问你,如果我使用ILIKE和prepared statements这会保护我不受sql注入的影响吗?“关键字ILIKE可以用来代替LIKE,使匹配根

Postgresql o转义用户输入。否则,用户可以输入与任何内容匹配的字符,如%。@MattDeLeon Hi。说得好。但我只想问你,如果我使用ILIKE和prepared statements这会保护我不受sql注入的影响吗?“关键字ILIKE可以用来代替LIKE,使匹配根,postgresql,Postgresql,o转义用户输入。否则,用户可以输入与任何内容匹配的字符,如%。@MattDeLeon Hi。说得好。但我只想问你,如果我使用ILIKE和prepared statements这会保护我不受sql注入的影响吗?“关键字ILIKE可以用来代替LIKE,使匹配根据活动区域设置不区分大小写。这不在sql标准中,而是PostgreSQL扩展。”像9.3ILIKE中的符咒一样工作。ILIKE比lower(column_name)慢,比如%expression%@PatrykImosa:你能详细说明或展示一个


o转义用户输入。否则,用户可以输入与任何内容匹配的字符,如%。@MattDeLeon Hi。说得好。但我只想问你,如果我使用
ILIKE
prepared statements
这会保护我不受
sql注入的影响吗?“关键字ILIKE可以用来代替LIKE,使匹配根据活动区域设置不区分大小写。这不在sql标准中,而是PostgreSQL扩展。”像9.3ILIKE中的符咒一样工作。ILIKE比
lower(column_name)慢,比如%expression%
@PatrykImosa:你能详细说明或展示一个ILIKE慢的例子吗?我也有同样的问题,我需要对我的PostgreSQL数据库进行不区分大小写的搜索。我考虑将用户输入字符串转换为正则表达式。现在,使用~*而不是=或类似的方法非常有效!我不需要创建新的索引、列或任何东西。当然,正则表达式搜索比直接字节比较慢,但我认为对性能的影响不会比必须处理两组数据(一组小写或大写仅用于搜索,然后必须从另一组中检索相应的原始数据)更大。而且,这更干净!很好,但是如何处理regexp_matches()这个例子呢?根据postgres文档:操作符~~相当于LIKE,而~*对应于ILIKE。还有!~~还有!~~*分别表示NOT LIKE和NOT ILIKE的运算符。所有这些操作符都是特定于PostgreSQL的。当文本中包含括号时,我遇到了一个问题,它不起作用。比如:“代码(LC)”嘿,罗宾,欢迎来到SO。詹姆斯·布朗的回答已经提出了这个解决方案。此外,您建议的答案没有以任何方式利用正则表达式。请注意,当在Spring Boot中使用时,Hibernate不支持
ILIKE
。@AnT它与
org.Hibernate.dial.PostgreSQL94dial
和Spring Boot 2.0.6.RELEASE一起使用。但IntelliJ对此表示不满。
SELECT id FROM groups where name='administrator'

SELECT id FROM groups where name='ADMINISTRATOR'

SELECT id FROM groups where name='Administrator'
SELECT id 
  FROM groups
 WHERE LOWER(name)=LOWER('Administrator')
SELECT id FROM groups where name ILIKE 'administrator'
SELECT id FROM groups WHERE name ILIKE 'Administrator'
SELECT id FROM groups where name ~* 'administrator'
SELECT id FROM groups WHERE name ~* 'adm'
SELECT id 
  FROM groups
 WHERE name ILIKE 'Administrator'