substrの開始番号
ハマったのでメモ。
Perlのsubstrは substr(文字,開始位置,長さ) の開始位置は0オリジンで、
SQLのsubstrも同じく SUBSTR(文字,開始位置,長さ) と同じ使い方ができるが、1オリジンである。
print substr('string!!!', 2, 1); #=> 'r'
-- MySQL SELECT SUBSTR('string!!!', 2, 1); --#=> 't'
ただしSQLのSUBSTRでも開始位置に0が使用できる。
その場合の挙動は、
になる。
-- MySQL SELECT SUBSTR('string!!!', 1, 1); --#=> 's' SELECT SUBSTR('string!!!', 0, 1); --#=> '' -- Oracle SELECT SUBSTR('string!!!', 1, 1) FROM dual; --#=> 's' SELECT SUBSTR('string!!!', 0, 1) FROM dual; --#=> 's'
SQL方言怖い><