0

我尝试只查询小写结果,但LIKE不区分大小写。

这是一个例子:

SELECT
    CITY
FROM
    TARGETS
WHERE
    CITY RLIKE '^b.*n$'

结果是

BOSTON
boston

我只想保留“波士顿”,但我不知道该怎么做。我检查了这个旧答案:

区分大小写的 RLIKE

但是,该语句CAST(CITY AS BINARY) RLIKE '^b.*n$'在 PostgreSQL 中不起作用。

4

1 回答 1

1

RLIKE在 MySQL 中使用。Postgres 中的正则表达式匹配运算符是~. (标准 SQL 都不是。)
~默认情况下区分大小写。
~*是不区分大小写的变体。

这会让你得到“波士顿”但不是“波士顿”:

SELECT city
FROM   targets
WHERE  city ~ '^b.*n$';

看:

LIKE不区分大小写。

您可能已经绊倒了那里的双重否定,但“不区分大小写”(即区分大小写)是您想要的。这也是LIKEPostgres(或标准 SQL)中的工作方式:

SELECT city
FROM   targets
WHERE  city LIKE 'b%n';

如果您想要不区分大小写,请ILIKE在 Postgres 中使用。

db<>在这里摆弄

但 MySQL 的做法不同:

db<>在这里摆弄

看:

于 2021-10-07T03:58:47.980 回答