2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

カラム名 BETWEEN 文字列 AND 文字列は機能するのか?

Last updated at Posted at 2020-10-31

SELECT * FROM テーブル WHERE カラム名(※26進数の文字列) BETWEEN 文字列 AND 文字列
が機能するかどうか、POSTGREで確認してみました。

【結論】
・桁数が可変だとBETWEENでの抽出は機能しない。
・桁数が固定ならBETWEENでの抽出は機能する。

【確認手順】
テスト用のテーブルを2つ作成し、予め用意しておいた下記の26進数データをCOPYコマンドで格納。

**テーブルA(固定桁数でない場合)** 1,B 2,C 3,D 4,E 5,F 6,G 7,H 8,I 9,J 10,K 11,L 12,M 13,N 14,O 15,P 16,Q 17,R 18,S 19,T 20,U 21,V 22,W 23,X 24,Y 25,Z 26,BA 27,BB 28,BC 29,BD 30,BE 31,BF 32,BG 33,BH 34,BI 35,BJ 36,BK 37,BL 38,BM 39,BN 40,BO 41,BP 42,BQ 43,BR 44,BS 45,BT 46,BU 47,BV 48,BW . .(中略) . 39976,CHDO 39977,CHDP 39978,CHDQ 39979,CHDR 39980,CHDS 39981,CHDT 39982,CHDU 39983,CHDV 39984,CHDW 39985,CHDX 39986,CHDY 39987,CHDZ 39988,CHEA 39989,CHEB 39990,CHEC 39991,CHED 39992,CHEE 39993,CHEF 39994,CHEG 39995,CHEH 39996,CHEI 39997,CHEJ 39998,CHEK 39999,CHEL 40000,CHEM

postgres=# select * from tableA where カラム名 = 'BS';
で、BSは44番目です。
BからBSまでの44個を取得しようと、
SELECT COUNT(*) FROM tableA WHERE カラム名 BETWEEN 'B' AND 'BS';
→結果は12656になりました。

**テーブルB(桁数3桁固定の場合)** 1,AAA 2,AAB 3,AAC 4,AAD 5,AAE 6,AAF 7,AAG 8,AAH 9,AAI 10,AAJ 11,AAK 12,AAL 13,AAM 14,AAN 15,AAO . 704,BBB .(中略) . 17562,ZZL 17563,ZZM 17564,ZZN 17565,ZZO 17566,ZZP 17567,ZZQ 17568,ZZR 17569,ZZS 17570,ZZT 17571,ZZU 17572,ZZV 17573,ZZW 17574,ZZX 17575,ZZY 17576,ZZZ

postgres=# select * from tableB where カラム名 = 'BBB';
でBBBは704番目でした。
AAAからBBBまでの704個を取得しようと、
postgres=# select count(*) from tableB where カラム名 between 'AAA' and 'BBB';
→結果は704でした。

結論として、桁数固定なら26進数での範囲抽出は機能することがわかりました。

自分の想定と合っていました。

とはいえ、BETWEENに文字列を指定するのはあまり推奨されるものではないと言われているようなので、今後使う機会はないかもしれません。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?