How to substring a MySQL table column

后端 未结 6 2083
借酒劲吻你
借酒劲吻你 2020-12-25 09:32

I want to select a field from table and substring it.

For example:

VAN1031 --> 1031

I tried this, but is improper syntax:

<
相关标签:
6条回答
  • 2020-12-25 10:12

    You can use:

    SUBSTR(string,position)
    SUBSTR(string,position,length)
    SUBSTRING_INDEX(string, delimiter, count)
    

    Examples:

    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
    

    From this link.

    0 讨论(0)
  • 2020-12-25 10:16
    SELECT substring(R.regnumber FROM 4) FROM registration AS R;
    

    and if you want to take the part as an integer not a string you can write:

    SELECT CAST(substring(R.regnumber FROM 4) AS UNSIGNED) FROM registration as R;
    
    0 讨论(0)
  • 2020-12-25 10:19

    I noticed that mysql index starts from 1 instead of zero as many programming languages did.

    SELECT SUBSTRING(R.regNumber,1,3) FROM registration AS R
    

    Returns VAN and

    SELECT SUBSTRING(R.regNumber,4) FROM registration AS R
    

    Returns the remaining part of the string as 1031

    0 讨论(0)
  • 2020-12-25 10:23

    You can use SUBSTRING():

    select substring(col1, 4)
    from table1
    

    See SQL Fiddle with Demo. So your query would be:

    SELECT substring(R.regnumber,4) 
    from registration R
    

    Of if you want to specify the number of characters to return:

    select substring(col1, 4, 4)
    from table1
    
    0 讨论(0)
  • 2020-12-25 10:25

    Sometimes you need to catch the column without some last characters. For example, I have:

    This is a string
    

    Let's say that for some reason I want column without last 6 characters:

    This is a 
    

    We can do (using @bluefeet 's answer and LENGHT):

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

    It was only an example, but you got the idea, I'm using to fix a wrong database import.

    0 讨论(0)
  • 2020-12-25 10:36

    You don't need the third argument (length) if you want to select all the characters to the right of a specific index:

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

    I also changed the start index to 4 because in SQL strings are 1-indexed and not 0-indexed as they are in many popular programming languages.

    0 讨论(0)
提交回复
热议问题