19896
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
19896
msg# 1
kokesi_kappa
投稿数: 2
SUBSTR(prod_name, LENGTH(prod_name)-2, 1)とSUBSTR(prod_name, -3, 1)がイコールになることが良く分かりません。
prod_nameの長さ-2の結果がなぜ「-3」になるのかどなたか解説して頂けませんでしょうか。
prod_nameの長さ-2の結果がなぜ「-3」になるのかどなたか解説して頂けませんでしょうか。
Re: 19896
msg# 1.1
arashi1977
居住地: 広島
投稿数: 1715
引用:参考に書いてありますよ
引用:つまり、このSQLではそれぞれ
・指定した文字列の全文字数-2の位置から1文字
・指定した文字列の後ろから3番め(-3)の位置から1文字
が表示されるわけですね。
以下の実例を元にすると、abcdefgという文字列は7文字だということがわかります。
なので、当然7-2=5文字目は
e(abcdefg)ですよね?
もう一つのパターン、「後ろから3文字目」で考えると並び替えて
e(gfedcba)ですよね?
SUBSTR(prod_name, LENGTH(prod_name)-2, 1)とSUBSTR(prod_name, -3, 1)がイコールになることが良く分かりません。
prod_nameの長さ-2の結果がなぜ「-3」になるのかどなたか解説して頂けませんでしょうか。
引用:
・SUBSTR関数は引数で指定された文字列の部分文字列を返します。
SUBSTR(文字列, m[, n])
引数で指定された文字列のm文字目からn文字分の文字列を返します。nが省略された場合はm文字目から末尾までの文字列を返します。
なお、mに負の値が指定された場合は、文字列の末尾から数えてm文字目からn文字文の文字列を返します。
※あ、「文字分」が「文字文」になってる…
・指定した文字列の全文字数-2の位置から1文字
・指定した文字列の後ろから3番め(-3)の位置から1文字
が表示されるわけですね。
以下の実例を元にすると、abcdefgという文字列は7文字だということがわかります。
SQL> select length('abcdefg') from dual;
LENGTH('ABCDEFG')
-----------------
7
SQL> select length('abcdefg')-2 from dual;
LENGTH('ABCDEFG')-2
-------------------
5
SQL> select substr('abcdefg', length('abcdefg')-2,1) from dual;
S
-
e
SQL> select substr('abcdefg', -3, 1) from dual;
S
-
e
Re: 19896
msg# 1.2
kokesi_kappa
投稿数: 2
ご丁寧な解説ありがとうございます!
ようやく理解できました。
ようやく理解できました。
Re: 19896
msg# 1.3
staff_meg
投稿数: 427
arashi1977さん
ご指摘の点を修正致しました。
ご報告、誠にありがとうございました。
ご指摘の点を修正致しました。
ご報告、誠にありがとうございました。