55

テーブルからフィールドを選択し、それをサブストリング化したい。

例えば:

VAN1031 --> 1031

私はこれを試しましたが、不適切な構文です:

SELECT SUBSTR(R.regnumber,3,3) from registration R

これはどのように行うことができますか?

4

6 に答える 6

49

特定のインデックスの右側にあるすべての文字を選択する場合は、3 番目の引数 (長さ) は必要ありません。

SELECT SUBSTR(R.regnumber, 4)
FROM registration AS R

また、開始インデックスを 4 に変更しました。これは、多くの一般的なプログラミング言語のように、SQL 文字列のインデックスが 0 ではなく 1 であるためです。

于 2012-10-07T17:58:23.723 に答える
33

以下を使用できます。

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

このリンクから。

于 2012-10-07T18:18:49.653 に答える
7

使用できます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
于 2012-10-07T17:59:57.123 に答える
2
SELECT substring(R.regnumber FROM 4) FROM registration AS R;

部分を文字列ではなく整数として取りたい場合は、次のように記述できます。

SELECT CAST(substring(R.regnumber FROM 4) AS UNSIGNED) FROM registration as R;
于 2016-05-03T20:19:25.907 に答える
2

場合によっては、最後の文字なしで列をキャッチする必要があります。たとえば、私は持っています:

This is a string

何らかの理由で、最後の6文字のない列が必要だとしましょう:

This is a 

できること (@bluefeet の回答と LENGHT を使用):

select substring(col1, 1,LENGTH(col1)-7)
from table1

これは単なる例ですが、おわかりのように、間違ったデータベースのインポートを修正するために使用しています。

于 2017-12-22T13:14:41.743 に答える