ほぼ全ての機能を新サイトへ移行しました

LENGTHの値が−になる?

  • フォーラムは新サイトへ移行しました。
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2019-7-16 7:40
2masn  新米   投稿数: 0
下記のSQLが一致するということは、LENGTHの値が−になるってことですか?
SELECT prod_name
FROM products
WHERE prod_name LIKE '%i%'
AND SUBSTR(prod_name,LENGTH(prod_name)-2, 1) = 'ラ';

SELECT prod_name
FROM products
WHERE INSTR(prod_name, 'i') != 0
AND
SUBSTR(prod_name, -3, 1) = 'ラ';


前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2019-7-16 12:33
quensan  長老   投稿数: 119
SUBSTR(prod_name,LENGTH(prod_name)-2, 1) = 'ラ'
SUBSTR(prod_name, -3, 1) = 'ラ'
上記が同じ条件なので「LENGTH(prod_name)-2」の部分も「-3」になる、という意味ではないです。

問題19896の解説にあるように、「LENGTH(prod_name)-2」は「PROD_NAME列の長さ - 2」です。PRODO_NMAE列が10文字だったら8文字目、つまりPROD_NAMEの末尾から3文字目ということです。
「SUBSTR(prod_name, -3, 1) 」の方は、「-3」が負の値なので文字列の末尾から数えて3文字目です。
結果として2つは同じ条件になります。
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2019-7-16 12:54
2masn  新米   投稿数: 0
回答ありがとうございます。

つまり、prod_name列が10文字の場合、2つのSQL結果は同じになる、ということでしょうか?
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2019-7-16 13:10
quensan  長老   投稿数: 119
prod_name列が10文字だったら8文字目、prod_name列が3文字だったら1文字目という例えです。いずれにせよ末尾から3文字目ですよね。
(prod_name列が2文字以下だとその条件にはなりませんが・・・)
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2019-7-16 23:37
2masn  新米   投稿数: 0
なるほど。理解しました。
回答、ありがとうございました。

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.
ログイン
ユーザ名 or E-Mailアドレス:

パスワード:







プレミアムコンテンツ

受験チケット(割引)

Contact

LPI-Japan Logo

LPI Logo