字符串函数
字符串函数用于操作字符串数据。
CONCAT
concat(col1...)连接数组或字符串。 此函数接受任意数量的参数并返回 String 或 Array。
ENDSWITH
endswith(col1, col2)返回一个布尔值,该布尔值指示第一个 String 参数是否以第二个 String 参数结尾。
FORMAT_TIME
format_time(col, format)将日期时间格式化为字符串。其中,若参数 col 为兼容类型,则在格式化之前转换为 datetime 类型 。关于格式字符串,请参考 时间格式。
时间格式
时间格式为一些特定符号和字母组成的字符串。eKuiper 里支持的符号如下表所示:
| 符号 | 含义 | 示例 |
|---|---|---|
| G | 公元 | G(AD) |
| Y | 年 | YYYY(2004), YY(04) |
| M | 月 | M(1), MM(01), MMM(Jan), MMMM(January) |
| d | 日期 | d(2), dd(02) |
| E | 星期几 | EEE(Mon), EEEE(Monday) |
| H | 24小时制的小时 | HH(15) |
| h | 12小时制的小时 | h(2), hh(03) |
| a | AM 或 PM | a(PM) |
| m | 分 | m(4), mm(04) |
| s | 秒 | s(5), ss(05) |
| S | 秒的分数 | S(.0), SS(.00), SSS(.000) |
| z | 时区名 | z(MST) |
| Z | 4位数的时区 | Z(-0700) |
| X | 时区 | X(-07), XX(-0700), XXX(-07:00) |
| \ | 转义符 | \Z(Z) \X(X) |
示例:
- YYYY-MM-dd T HH:mm:ss -> 2006-01-02 T 15:04:05
- YYYY/MM/dd HH:mm:ssSSS XXX -> 2006/01/02 15:04:05.000 -07:00
- yyyy-MM-ddTHH:mm:ssSS\ZXX -> 2006-01-02T15:04:05.00Z-0700
INDEXOF
indexof(col1, col2)返回第二个参数的第一个索引(从0开始),作为第一个参数中的子字符串。
LENGTH
length(col)返回提供的字符串中的字符数。
LOWER
lower(col)返回给定 String 的小写版本。
LPAD
lpad(col, padNum)返回 String,在左侧用第二个参数指定的空格数填充。请注意,若第二个参数很大,返回的字符串会占据很多内存。尽量避免使用大的长度参数,若参数为变量,可通过 WHERE 语句等方式进行过滤,例如 SELECT lpad(col, len) from source WHERE len < 999999。
LTRIM
ltrim(col)从提供的字符串中删除所有前导空格(制表符和空格)。
NUMBYTES
numbytes(col)返回提供的字符串中的字节数。
REGEXP_MATCHES
regexp_matches(col, regex)如果字符串(第一个参数)包含正则表达式的匹配项,则返回 true。
REGEXP_REPLACE
regexp_replace(col, regex, str)将第一个参数中所有出现的第二个参数(正则表达式)替换为第三个参数。
REGEXP_SUBSTR
regexp_substr(col, regex)在第一个参数中找到第二个参数(regex)的第一个匹配项。
RPAD
rpad(col, padNum)返回 String,在右侧填充第二个参数指定的空格数。请注意,若第二个参数很大,返回的字符串会占据很多内存。尽量避免使用大的长度参数,若参数为变量,可通过 WHERE 语句等方式进行过滤,例如 SELECT rpad(col, len) from source WHERE len < 999999。
RTRIM
rtrim(col)从提供的字符串中删除所有尾随空白(制表符和空格)。
SUBSTRING
substring(col, start, end)返回 String,其中包含从 start 到 end 的子字符串。
STARTSWITH
startswith(col, str)返回布尔值,是否第一个字符串参数是否以第二个字符串参数开头。
SPLIT_VALUE
split_value(col, splitter, index)将第一个字符串参数以第二个字符串参数作为分隔符切分,返回切分后的第 index(参数三)个值。
TRIM
trim(col)从提供的字符串中删除所有前导和尾随空格(制表符和空格)。
UPPER
upper(col)返回给定 String 的大写版本。
FORMAT
format(col,D[,locale])将数字X格式化为类似'#######.##'的格式,四舍五入保留D位小数,并将结果作为字符串返回。可选的第三个参数允许指定要用于结果数字小数点的 地区设置。
SELECT format(12332.1234567, 4,"en_US");
-> '12,332.1235'根据区域的不同,数值的显示格式也大不相同。例如,以下是针对特定区域设置对数字 123456.78 进行格式设置的例子:
| 区域 | 数字格式 |
|---|---|
| en_US | 123,456.78 |
| de_DE | 123.456,78 |
| de_CH | 123'456.78 |
更多地区选项:
| 地区值 | 含义 |
|---|---|
| ar_AE | 阿拉伯语 - 阿拉伯联合酋长国 |
| ar_BH | 阿拉伯语 - 巴林 |
| ar_DZ | 阿拉伯语 - 阿尔及利亚 |
| ar_EG | 阿拉伯语 - 埃及 |
| ar_IN | 阿拉伯语 - 印度 |
| ar_IQ | 阿拉伯语 - 伊拉克 |
| ar_JO | 阿拉伯语 - 约旦 |
| ar_KW | 阿拉伯语 - 科威特 |
| ar_LB | 阿拉伯语 - 黎巴嫩 |
| ar_LY | 阿拉伯语 - 利比亚 |
| ar_MA | 阿拉伯语 - 摩洛哥 |
| ar_OM | 阿拉伯语 - 阿曼 |
| ar_QA | 阿拉伯语 - 卡塔尔 |
| ar_SA | 阿拉伯语 - 沙特阿拉伯 |
| ar_SD | 阿拉伯语 - 苏丹 |
| ar_SY | 阿拉伯语 - 叙利亚 |
| ar_TN | 阿拉伯语 - 突尼斯 |
| ar_YE | 阿拉伯语 - 也门 |
| be_BY | 白俄罗斯语 - 白俄罗斯 |
| bg_BG | 保加利亚语 - 保加利亚 |
| ca_ES | 加泰罗尼亚语 - 西班牙 |
| cs_CZ | 捷克语 - 捷克共和国 |
| da_DK | 丹麦语 - 丹麦 |
| de_AT | 德语 - 奥地利 |
| de_BE | 德语 - 比利时 |
| de_CH | 德语 - 瑞士 |
| de_DE | 德语 - 德国 |
| de_LU | 德语 - 卢森堡 |
| el_GR | 希腊语 - 希腊 |
| en_AU | 英语 - 澳大利亚 |
| en_CA | 英语 - 加拿大 |
| en_GB | 英语 - 英国 |
| en_IN | 英语 - 印度 |
| en_NZ | 英语 - 新西兰 |
| en_PH | 英语 - 菲律宾 |
| en_US | 英语 - 美国 |
| en_ZA | 英语 - 南非 |
| en_ZW | 英语 - 津巴布韦 |
| es_AR | 西班牙语 - 阿根廷 |
| es_BO | 西班牙语 - 玻利维亚 |
| es_CL | 西班牙语 - 智利 |
| es_CO | 西班牙语 - 哥伦比亚 |
| es_CR | 西班牙语 - 哥斯达黎加 |
| es_DO | 西班牙语 - 多米尼加共和国 |
| es_EC | 西班牙语 - 厄瓜多尔 |
| es_ES | 西班牙语 - 西班牙 |
| es_GT | 西班牙语 - 危地马拉 |
| es_HN | 西班牙语 - 洪都拉斯 |
| es_MX | 西班牙语 - 墨西哥 |
| es_NI | 西班牙语 - 尼加拉瓜 |
| es_PA | 西班牙语 - 巴拿马 |
| es_PE | 西班牙语 - 秘鲁 |
| es_PR | 西班牙语 - 波多黎各 |
| es_PY | 西班牙语 - 巴拉圭 |
| es_SV | 西班牙语 - 萨尔瓦多 |
| es_US | 西班牙语 - 美国 |
| es_UY | 西班牙语 - 乌拉圭 |
| es_VE | 西班牙语 - 委内瑞拉 |
| et_EE | 爱沙尼亚语 - 爱沙尼亚 |
| eu_ES | 巴斯克语 - 西班牙 |
| fi_FI | 芬兰语 - 芬兰 |
| fo_FO | 法罗语 - 法罗群岛 |
| fr_BE | 法语 - 比利时 |
| fr_CA | 法语 - 加拿大 |
| fr_CH | 法语 - 瑞士 |
| fr_FR | 法语 - 法国 |
| fr_LU | 法语 - 卢森堡 |
| gl_ES | 加利西亚语 - 西班牙 |
| gu_IN | 古吉拉特语 - 印度 |
| he_IL | 希伯来语 - 以色列 |
| hi_IN | 印地语 - 印度 |
| hr_HR | 克罗地亚语 - 克罗地亚 |
| hu_HU | 匈牙利语 - 匈牙利 |
| id_ID | 印度尼西亚语 - 印度尼西亚 |
| is_IS | 冰岛语 - 冰岛 |
| it_CH | 意大利语 - 瑞士 |
| it_IT | 意大利语 - 意大利 |
| ja_JP | 日语 - 日本 |
| ko_KR | 朝鲜语 - 韩国 |
| lt_LT | 立陶宛语 - 立陶宛 |
| lv_LV | 拉脱维亚语 - 拉脱维亚 |
| mk_MK | 马其顿语 - 北马其顿 |
| mn_MN | 蒙古语 - 蒙古 |
| ms_MY | 马来语 - 马来西亚 |
| nb_NO | 挪威语(书面) - 挪威 |
| nl_BE | 荷兰语 - 比利时 |
| nl_NL | 荷兰语 - 荷兰 |
| no_NO | 挪威语 - 挪威 |
| pl_PL | 波兰语 - 波兰 |
| pt_BR | 葡萄牙语 - 巴西 |
| pt_PT | 葡萄牙语 - 葡萄牙 |
| rm_CH | 罗曼什语 - 瑞士 |
| ro_RO | 罗马尼亚语 - 罗马尼亚 |
| ru_RU | 俄语 - 俄罗斯 |
| ru_UA | 俄语 - 乌克兰 |
| sk_SK | 斯洛伐克语 - 斯洛伐克 |
| sl_SI | 斯洛文尼亚语 - 斯洛文尼亚 |
| sq_AL | 阿尔巴尼亚语 - 阿尔巴尼亚 |
| sr_RS | 塞尔维亚语 - 塞尔维亚 |
| sv_FI | 瑞典语 - 芬兰 |
| sv_SE | 瑞典语 - 瑞典 |
| ta_IN | 泰米尔语 - 印度 |
| te_IN | 泰卢固语 - 印度 |
| th_TH | 泰语 - 泰国 |
| tr_TR | 土耳其语 - 土耳其 |
| uk_UA | 乌克兰语 - 乌克兰 |
| ur_PK | 乌尔都语 - 巴基斯坦 |
| vi_VN | 越南语 - 越南 |
| zh_CN | 中文 - 中国 |
| zh_HK | 中文 - 香港 |
| zh_TW | 中文 - 台湾 |