テーブルからフィールドを選択し、それをサブストリング化したい。
例えば:
VAN1031 --> 1031
私はこれを試しましたが、不適切な構文です:
SELECT SUBSTR(R.regnumber,3,3) from registration R
これはどのように行うことができますか?
特定のインデックスの右側にあるすべての文字を選択する場合は、3 番目の引数 (長さ) は必要ありません。
SELECT SUBSTR(R.regnumber, 4)
FROM registration AS R
また、開始インデックスを 4 に変更しました。これは、多くの一般的なプログラミング言語のように、SQL 文字列のインデックスが 0 ではなく 1 であるためです。
以下を使用できます。
SUBSTR(string,position)
SUBSTR(string,position,length)
SUBSTRING_INDEX(string, delimiter, count)
例:
command prints
------------------------------------------- -----------
select substr("abcd", 1, 1) #a
select substr("abcd", 1, 2) #ab
select substr("abcd", 2, 1) #b
select substr("abcd", 2, 2) #bc
select substr("abcd", -2, 1) #c
select substr("abcd", -2, 2) #cd
select substring_index('ababab', 'b', 1); #a
select substring_index('ababab', 'b', 2); #aba
select substring_index('ababab', 'b', 3); #ababa
select substring_index('ababab', 'b', -1); #
select substring_index('ababab', 'b', -2); #ab
select substring_index('ababab', 'b', -3); #abab
select substr("abcd", 2) #bcd
select substr("abcd", 3) #cd
select substr("abcd", 4) #d
select substr("abcd", -2) #cd
select substr("abcd", -3) #bcd
select substr("abcd", -4) #abcd
このリンクから。
使用できますSUBSTRING()
:
select substring(col1, 4)
from table1
SQL Fiddle with Demoを参照してください。したがって、クエリは次のようになります。
SELECT substring(R.regnumber,4)
from registration R
返す文字数を指定する場合:
select substring(col1, 4, 4)
from table1
SELECT substring(R.regnumber FROM 4) FROM registration AS R;
部分を文字列ではなく整数として取りたい場合は、次のように記述できます。
SELECT CAST(substring(R.regnumber FROM 4) AS UNSIGNED) FROM registration as R;
場合によっては、最後の文字なしで列をキャッチする必要があります。たとえば、私は持っています:
This is a string
何らかの理由で、最後の6文字のない列が必要だとしましょう:
This is a
できること (@bluefeet の回答と LENGHT を使用):
select substring(col1, 1,LENGTH(col1)-7)
from table1
これは単なる例ですが、おわかりのように、間違ったデータベースのインポートを修正するために使用しています。