Skip to content

Latest commit

 

History

History
103 lines (89 loc) · 3.16 KB

SQL字符串处理.md

File metadata and controls

103 lines (89 loc) · 3.16 KB

SQL 字符串处理

last modify

参考文档

常规

小写

lower(string)

  • 支持的引擎:
  • 对应的 Python 操作:str.lower()

移除首尾空白符

trim(string)

  • 支持的引擎:
  • 对应的 Python 操作:str.strip()

拼接

array_join(array, sep, null_replacement)

  • 支持的引擎:
    • Presto
      SELECT array_join(ARRAY[1, NULL, 2], ','); -- 1,2
      SELECT array_join(ARRAY[1, NULL, 2], '_', 'N'); -- 1_N_2
      SELECT array_join(
                  regexp_split('a(b), c', '[^a-z]'), 
                  ' ');  -- 'a b c'
  • 对应的 Python 操作:sep.join(array)

截取

  • substr(string, start)
  • substr(string, start, length)

    substr - Presto

    注意:Positions start with 1

    -- Presto
    SELECT substr('abcde', 1)   -- abcde
    , substr('abcde', 2)        -- bcde
    , substr('abcde', 2, 3)     -- bcd
    , substr('abcde', -2)       -- de
    , substr('abcde', -3, 2)    -- cd
    ;

正则

正则替换

  • regexp_replace(string, pattern, replacement)

    regexp_replace - Presto

    -- Presto
    SELECT regexp_replace('a   b  c', '\s+', ' '); -- 'a b c'

正则切分

  • regexp_split(string, pattern)

    regexp_split - Presto

    -- Presto
    SELECT regexp_split('a(b), c', '[^a-z]'); -- '[a, b, , , c]'
    SELECT array_join(
                regexp_split('a(b), c', '[^a-z]'), 
                ' ');  -- 'a b c'

正则抽取

  • regexp_extract(string, pattern)
  • regexp_extract(string, pattern, group)

    regexp_extract - Presto

    -- Presto
    SELECT regexp_extract('1a 2b 14m', '\d+'); -- 1
    SELECT regexp_extract('1a 2b 14m', '(\d+)([a-z]+)', 2); -- 'a'
  • regexp_extract_all(string, pattern)
  • regexp_extract_all(string, pattern, group)

    regexp_extract_all - Presto

    -- Presto
    SELECT regexp_extract_all('1a 2b 14m', '\d+'); -- [1, 2, 14]
    SELECT regexp_extract_all('1a 2b 14m', '(\d+)([a-z]+)', 2); -- ['a', 'b', 'm']