用clickhouse sql实现金額中文数字和阿拉伯数字之间的互相转换
时间: 2024-02-01 21:16:08 浏览: 154
ClickHouse SQL 不直接支持中文数字和阿拉伯数字的互相转换,但是可以通过自定义函数实现该功能。以下是一个示例函数,可以将中文数字转换为阿拉伯数字:
```sql
CREATE FUNCTION cn2ar(s String) RETURNS UInt64
LANGUAGE JAVASCRIPT
IMMUTABLE
AS $$
const cnNums = {
'零': 0,
'一': 1,
'二': 2,
'三': 3,
'四': 4,
'五': 5,
'六': 6,
'七': 7,
'八': 8,
'九': 9
}
let result = 0
let current = 0
for (let i = 0; i < s.length; i++) {
let c = s.charAt(i)
let n = cnNums[c]
if (n != undefined) {
current = n
} else {
switch(c) {
case '十':
current *= 10
break
case '百':
current *= 100
break
case '千':
current *= 1000
break
case '万':
result += current * 10000
current = 0
break
case '亿':
result += current * 100000000
current = 0
break
}
}
}
result += current
return result
$$;
```
使用该函数可以将中文数字转换为阿拉伯数字:
```sql
SELECT cn2ar('一千零二十三万四千五百六十七') AS num;
-- 输出:10234567
```
同样,也可以编写一个函数将阿拉伯数字转换为中文数字。
阅读全文