日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

字符串函數

本文介紹Lindorm支持的字符串函數的用法及示例。

引擎與版本

字符串函數適僅用于寬表引擎,且引擎版本需為2.5.1.1及以上版本。

說明

如何查看和升級當前版本,請參見寬表引擎版本說明升級小版本。

函數列表

Lindorm支持的字符串函數如下表所示:

函數

說明

CONCAT

將多個字符串拼接成一個新的字符串。

LENGTH

計算字符串的長度。

LOWER

將字符串中所有的字母都轉換為小寫字母。

MD5

計算指定字符串的MD5值。

SHA256

計算指定字符串的SHA256編碼值。

REPLACE

將匹配指定規則的子串替換為新的字符串。

REVERSE

返回逆序的字符串。

REGEXP_REPLACE

從字符串指定位置開始,將匹配指定規則的子串替換為新的字符串。

REGEXP_SUBSTR

返回從字符串指定位置開始,匹配指定規則的子串。

SUBSTR

返回字符串中指定長度的子串。

START_WITH

判斷字符串的前綴是否為指定字符串。

TRIM

刪除字符串前后的空格。

UPPER

將字符串中所有的字母都轉換為大寫字母。

MATCH

判斷指定列的值是否匹配指定的規則。

CONCAT函數

將多個字符串拼接成一個新的字符串。

語法

CONCAT('string1','string2',...,'stringN')

參數說明

參數

是否必填

說明

'string1','string2',...,'stringN'

需要拼接的字符串,多個字符串之間用英文逗號(,)分隔。

示例

將單獨的字符串a、bc進行拼接,組成一個新的字符串abc

SELECT concat('a','b','c') AS val;

返回結果:

+--------+
| val    |
+--------+
| abc    |
+--------+

返回結果為拼接后的新字符串,且字符串中間無間隔符。

LENGTH函數

計算字符串的長度。

語法

LENGTH('string')

參數說明

參數

是否必填

說明

string

待匹配的字符串。

示例

計算字符串abc的長度。

SELECT length('abc') AS len;

返回結果:

+-----+
| len |
+-----+
| 3   |
+-----+

返回結果為3,表示字符串abc的長度為3。

LOWER函數

將字符串中所有的字母都轉換為小寫字母。

語法

LOWER('string')

參數說明

參數

是否必填

說明

string

待轉換的字符串。

示例

  • 示例1:將字符串ABC中所有的字母都轉換為小寫字母。

    SELECT lower('ABC') AS val;

    返回結果:

    +--------+
    | val    |
    +--------+
    | abc    |
    +--------+

    返回結果為abc,表示已將字符串ABC中所有的大寫字母都轉換為小寫字母abc。

  • 示例2:將字符串Abc中所有的字母都轉換為小寫字母。

    SELECT lower('Abc') AS val;

    返回結果:

    +--------+
    | val    |
    +--------+
    | abc    |
    +--------+

    返回結果為abc,表示已將字符串Abc中所有的大寫字母都轉換為小寫字母abc。

MD5函數

計算指定字符串的MD5值。

語法

MD5('string')

參數說明

參數

是否必填

說明

string

待匹配的字符串。

示例

計算指定字符串abc的MD5值。

SELECT md5('abc') AS val;

返回結果:

+----------------------------------+
|               val                |
+----------------------------------+
| 900150983cd24fb0d6963f7d28e17f72 |
+----------------------------------+

返回結果為字符串abc的MD5值。

SHA256函數

計算指定字符串的SHA256編碼值。

語法

SHA256('string')

參數說明

參數

是否必填

說明

string

待編碼的字符串。

示例

假設表結構及表中數據如下:

-- 創建示例表
CREATE TABLE tb (id int, name varchar, address varchar, PRIMARY KEY(id, name)); 

-- 寫入數據
UPSERT INTO tb (id, name, address) VALUES (1, 'jack',  'hz');

查詢id值為1的行中對應的name列數據的SHA256編碼值。

SELECT sha256(name) AS sc FROM tb WHERE id=1;

返回結果:

+------------------------------------------------------------------+
|                                sc                                |
+------------------------------------------------------------------+
| 31611159e7e6ff7843ea4627745e89225fc866621cfcfdbd40871af4413747cc |
+------------------------------------------------------------------+

返回結果為字符串jack的SHA256編碼值。

REPLACE函數

將匹配指定規則的子串替換為新的字符串。

語法

REPLACE('string','from_str','to_str')

參數說明

參數

是否必填

說明

string

待匹配的字符串。

from_str

指定字符串。

to_str

替換的字符串。

示例,

  • 示例1:將字符串abc中所有匹配bc的子串都替換為cd。

    SELECT replace('abc','bc','cd') AS val;

    返回結果:

    +-----+
    | val |
    +-----+
    | acd |
    +-----+

    返回結果為acd,表示已將字符串abc中匹配bc的子串替換為cd。

  • 示例2:將字符串abcbc中所有匹配bc的子串都替換為cd。

    SELECT replace('abcbc', 'bc', 'cd') AS val;

    返回結果:

    +-------+
    |  val  |
    +-------+
    | acdcd |
    +-------+

    返回結果為acdcd,表示已將字符串abcbc中匹配bc的子串替換為cd。

REVERSE函數

返回逆序的字符串。

語法

REVERSE('string')

參數說明

參數

是否必填

說明

string

待匹配的字符串。

示例

將字符串abc逆序輸出。

SELECT reverse('abc') AS val;

返回結果:

+-----+
| val |
+-----+
| cba |
+-----+

返回結果為cba ,表示已將字符串abc逆序輸出。

REGEXP_REPLACE函數

從字符串指定位置開始,將匹配指定規則的子串替換為新的字符串。

語法

REGEXP_REPLACE('string',pat,rep,[pos])

參數說明

參數

是否必填

說明

string

待匹配的字符串。

pattern

正則表達式。

rep

替換的字符串。

position

開始匹配字符串的位置,取值為大于等于1的整數。不指定該參數時,默認從第1個字符開始匹配。

示例

  • 示例1:不指定pos參數。默認從第1個字符開始匹配,并將匹配b的子串替換為c

    SELECT regexp_replace('abc', 'b', 'c') AS val;

    返回結果:

    +-----+
    | val |
    +-----+
    | acc |
    +-----+

    返回結果為acc,表示已將字符串abc中匹配b的子串替換為c。

  • 示例2:指定pos參數。從第2個字符開始匹配,并將匹配b的子串替換為c

    SELECT regexp_replace('abcbc', 'b', 'c', 2) AS val;

    返回結果:

    +-------+
    |  val  |
    +-------+
    | acccc |
    +-------+

acccc,表示已將字符串abcbc中第2個字符至字符串末尾匹配b的子串替換為c。

  • 示例3:指定pos參數。從第3個字符開始匹配,并將匹配b的子串替換為c。

    SELECT regexp_replace('abcbc', 'b', 'c', 3) AS val;

    返回結果:

    +-------+
    |  val  |
    +-------+
    | abccc |
    +-------+

    返回結果為abccc,表示已將字符串abcbc中第3個字符至字符串末尾匹配b的子串替換為c

REGEXP_SUBSTR函數

返回從字符串指定位置開始,匹配指定規則的子串。

語法

REGEXP_SUBSTR('string', pat, [pos])

參數說明

參數

是否必填

說明

string

待匹配的字符串。

pattern

正則表達式。

position

開始匹配字符串的位置,取值為大于等于1的整數。不指定該參數時,默認從第1個字符開始匹配。

示例

  • 示例1:指定pos參數,從字符串abc的第3個字符開始匹配b的子串。

     SELECT regexp_substr('abc', 'b', 3) AS val;

    返回結果:

    +-----+
    | val |
    +-----+
    |     |
    +-----+

    返回結果為,表示從字符串第3個字符開始無匹配b的子串。

  • 示例2:不指定pos參數,默認從字符串abc的第1個字符開始匹配b的子串。

    SELECT regexp_substr('abc', 'b') AS val;

    返回結果:

    +-----+
    | val |
    +-----+
    | b   |
    +-----+

    返回結果為b,表示從字符串第1個字符開始截取匹配b的子串。

SUBSTR函數

返回字符串中指定長度的子串。

語法

SUBSTR( string, pos, [len])

參數說明

參數

是否必填

說明

string

待匹配的字符串。

position

開始截取字符串的位置,取值為大于等于1的整數。

len

從左向右截取字符串的長度,取值為大于等于1的整數。不指定該參數時,則默認返回pos參數指定位置到字符串末尾的子串。

示例

  • 示例1:不指定len參數,默認返回字符串abc第2個字符到字符串末尾的子串。

    SELECT substr('abc', 2) AS val;

    返回結果:

    +-----+
    | val |
    +-----+
    | bc  |
    +-----+

    返回結果為bc,表示字符串abc第2個字符至字符串末尾的子串。

  • 示例2:指定len參數,返回字符串abc第1個字符到第2個字符的子串。

    SELECT substr('abc', 1, 2) AS val;

    返回結果:

    +-----+
    | val |
    +-----+
    | ab  |
    +-----+

    返回結果為ab,表示字符串abc第1個字符到第2個字符的子串。

START_WITH函數

判斷字符串的前綴是否為指定字符串。

語法

START_WITH('string1', 'string2')

參數說明

參數

是否必填

說明

string1

待匹配的字符串。

string2

指定字符串。

示例

  • 示例1:判斷字符串abc的前綴是否為指定字符串ab。

    SELECT start_with('abc', 'ab') AS val;

    返回結果:

    +--------+
    | val    |
    +--------+
    | true   |
    +--------+

    返回結果為true,表示字符串abc的前綴是指定字符串ab

  • 示例2:判斷字符串abc的前綴是否為指定字符串bc

    SELECT start_with('abc', 'bc') AS val;

    返回結果:

    +--------+
    | val    |
    +--------+
    | false  |
    +--------+

    返回結果為false,表示字符串abc的前綴不是指定字符串bc。

TRIM函數

刪除字符串前后的空格。

語法

TRIM('string')

參數說明

參數

是否必填

說明

string

待匹配的字符串。

示例

刪除指定字符串 abc 前后的空格。

SELECT trim(' abc    ') AS str;

返回結果:

+-----+
| str |
+-----+
| abc |
+-----+

返回結果為刪除前后空格后的結果。

UPPER函數

將字符串中所有的字母都轉換為大寫字母。

語法

UPPER('string')

參數說明

參數

是否必填

說明

string

待轉換的字符串。

示例

  • 示例1:將字符串abc中所有的字母都轉換為大寫字母。

    SELECT upper('abc') AS val;

    返回結果:

    +--------+
    | val    |
    +--------+
    | ABC    |
    +--------+

    返回結果為ABC,表示已將字符串abc中所有的小寫字母轉換為大寫字母ABC。

  • 示例2:將字符串aBC中所有的字母都轉換為大寫字母。

    SELECT upper('aBC') AS val;

    返回結果:

    +--------+
    | val    |
    +--------+
    | ABC    |
    +--------+

    返回結果為ABC,表示已將字符串aBC中所有的小寫字母都轉換為大寫字母ABC。

MATCH函數

判斷指定列的值是否匹配指定的規則。

重要

僅寬表引擎2.7.2及以上版本支持MATCH函數。如何查看或升級當前版本,請參見寬表引擎版本說明升級小版本。

語法

MATCH (column_identifiers) AGAINST (search_expr [search_modifier])
說明
  • 目前MATCH函數只能用于SQL查詢的WHERE子句中。

  • 包含MATCH函數的查詢語句,其結果默認按照MATCH函數的匹配程度倒序排序。

參數說明

參數

是否必填

說明

column_identifiers

需要進行匹配的列。如有多個列,請以半角逗號(,)分隔。提供了多個列時,這些列的內容將會組合后共同參與匹配。

重要

column_identifiers指定的列必須已創建搜索索引,且均為分詞列。搜索索引的開通及創建方式,請參見開通搜索索引CREATE INDEX

search_expr

一個字符串常量,指定匹配規則字符串。詳細說明,請參見匹配規則說明。

search_modifier

search_modifier可以指定為IN BOOLEAN MODE,查詢效果與不添加該子句時相同。例如:SELECT * FROM tb WHERE MATCH (c1) AGAINST ('+hello' IN BOOLEAN MODE);。

匹配規則說明

匹配規則由一個或多個條件構成,每個條件之間以空格分隔。一個條件可以是以下幾種之一:

  • 單個詞語,表示期望包含該詞語,例如hello。

  • 以雙引號包圍的短語,表示期望包含這個短語的整體,不做分詞,例如"hello world"表示獲取包含"hello world"短語的數據。

  • 以括號包圍的另一個匹配規則,表示期望滿足括號內的匹配規則,例如(another "hello world")。

在條件前添加符號,可以改變該條件的匹配行為:

  • +表示該條件必須被滿足。

  • -表示該條件不能被滿足。

  • 不帶符號時,表示該條件不必須被滿足,但滿足了該條件的數據可以獲得更靠前的排序。

示例

假設表結構及表中數據如下:

-- 創建示例表tb
CREATE TABLE tb (id INT, c1 VARCHAR, PRIMARY KEY(id)); 

-- 創建搜索索引。創建前請確保已開通搜索索引
CREATE INDEX idx USING SEARCH ON tb (c1(type=text));

-- 向示例表tb中插入示例數據
UPSERT INTO tb (id,c1) VALUES (1,'hello');
UPSERT INTO tb (id,c1) VALUES (2,'world');
UPSERT INTO tb (id,c1) VALUES (3,'hello world');
UPSERT INTO tb (id,c1) VALUES (4,'hello my world');
UPSERT INTO tb (id,c1) VALUES (5,'hello you');
UPSERT INTO tb (id,c1) VALUES (6,'hello you and me');
UPSERT INTO tb (id,c1) VALUES (7,'you and me');
  • 示例一:查詢c1列中包含單詞hello或單詞world的數據。

    SELECT * FROM tb WHERE MATCH (c1) AGAINST ('hello world');

    返回結果:

    +----+------------------+
    | id |        c1        |
    +----+------------------+
    | 3  | hello world      |
    | 2  | world            |
    | 4  | hello my world   |
    | 5  | hello you        |
    | 1  | hello            |
    | 6  | hello you and me |
    +----+------------------+
  • 示例二:查詢c1列中可能包含單詞hello,但必須包含單詞world的數據。

    SELECT * FROM tb WHERE MATCH (c1) AGAINST ('hello +world');

    返回結果:

    +----+----------------+
    | id |       c1       |
    +----+----------------+
    | 3  | hello world    |
    | 2  | world          |
    | 4  | hello my world |
    +----+----------------+
  • 示例三:查詢c1列中包含單詞world,但不包含單詞hello的數據。

    SELECT * FROM tb WHERE MATCH (c1) AGAINST ('-hello +world');

    返回結果:

    +----+-------+
    | id |  c1   |
    +----+-------+
    | 2  | world |
    +----+-------+
  • 示例四:查詢c1列中包含短語hello world的數據。

    SELECT * FROM tb WHERE MATCH (c1) AGAINST ('"hello world"');

    返回結果:

    +----+-------------+
    | id |     c1      |
    +----+-------------+
    | 3  | hello world |
    +----+-------------+
  • 示例五:查詢c1列中包含單詞hello,且同時包含單詞you或單詞me的數據。

    SELECT * FROM tb WHERE MATCH (c1) AGAINST ('+hello +(you me)');

    返回結果:

    +----+------------------+
    | id |        c1        |
    +----+------------------+
    | 6  | hello you and me |
    | 5  | hello you        |
    +----+------------------+