isupper
postgresqlのようなまたはまたはpostgresql内の関数を見つけることができませんでしたislower
。私が実際に必要としているのは、テーブルからすべてのレコードを選択することです。ここで、列の1つに大文字の(大文字ではない)単語が含まれています。つまり、各単語の最初の記号は大文字で、2番目の記号は小文字です。言葉はどんな言語でも書くことができます。
質問する
24432 次
4 に答える
32
列の最初の文字の大文字と小文字が列の最初の文字の小文字と等しくない行を選択するのはどうですか?
何かのようなもの:
SELECT * FROM table
WHERE SUBSTRING(col FROM 1 FOR 1) != LOWER(SUBSTRING(col FROM 1 FOR 1))
理論的には、上記ではデータベースの文字セット/ロケールも考慮に入れる必要があります。
于 2012-12-04T16:38:35.607 に答える
15
Postgres 正規表現を使用して、特定の条件をテストできます。
select * from sample
where col ~ E'^[[:upper:]][^[:upper:]]'
E'^[[:upper:]][[:lower:]]'
2 番目の文字が大文字以外ではなく小文字のアルファである必要がある場合に使用できます。
于 2012-12-04T17:40:09.190 に答える
1
postgresql
文字列の比較では大文字と小文字が区別されるため、BobG の回答の方が優れています
このような
SELECT *
FROM yourTable
WHERE (ascii(LEFT(yourColumn), 1) BETWEEN 65 AND 90)
AND (ascii(SUBSTRING(yourColumn from 2 for 1), 1) BETWEEN 97 AND 122)
リンクしたASCIIテーブルでわかるように、65から90の間の場合は大文字です
97 ~ 122 の場合は小文字です。
于 2012-12-04T16:36:56.887 に答える