LENGTHの値が−になる?
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
LENGTHの値が−になる?
msg# 1
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) = 'ラ';
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) = 'ラ';
Re: LENGTHの値が−になる?
msg# 1.1
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つは同じ条件になります。
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つは同じ条件になります。
Re: LENGTHの値が-になる?
msg# 1.2
2masn
投稿数: 0
回答ありがとうございます。
つまり、prod_name列が10文字の場合、2つのSQL結果は同じになる、ということでしょうか?
つまり、prod_name列が10文字の場合、2つのSQL結果は同じになる、ということでしょうか?
Re: Re: LENGTHの値が-になる?
msg# 1.3
quensan
投稿数: 119
prod_name列が10文字だったら8文字目、prod_name列が3文字だったら1文字目という例えです。いずれにせよ末尾から3文字目ですよね。
(prod_name列が2文字以下だとその条件にはなりませんが・・・)
(prod_name列が2文字以下だとその条件にはなりませんが・・・)
Re: LENGTHの値が-になる?
msg#
2masn
投稿数: 0
なるほど。理解しました。
回答、ありがとうございました。
回答、ありがとうございました。