You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术请求:为提取文本中Rs数值的SQL代码编写操作流程

从文本中提取卢比(Rs)数值的SQL操作流程

以下是这段SQL代码的分步操作说明:

1. 创建临时存储表

先创建名为#income的临时表,用来存放包含收入、支出描述的文本数据。表中仅设一个clientIncome字段,类型为NVARCHAR(200),适配不同长度的业务文本。

CREATE TABLE #income (clientIncome NVARCHAR(200));

2. 插入测试文本数据

向临时表插入多条模拟业务场景的文本数据,其中部分数据带有Rs标识的金额,部分仅为费用类别描述,用于验证提取逻辑的有效性。

INSERT INTO #income
(
    clientIncome
)
VALUES ('INCOME FROM RETAIL SALE OF VEGETABLE BUSINESS RS 30,000/-'),
('INCOME FROM WHOLE  SALE OF VEGETABLE BUSINESS- RS 40,000/-'),
('TOTAL INCOME APPROX- RS 70,000/-'),
('TOTAL EXPENSES- RS 35,000/-'),
('[SALARIES, FUEL, OTHER EXPENSES]'),
('NET INCOME- RS 35,000/-');

3. 提取并转换卢比数值

通过查询语句从文本中提取Rs后的金额,并转换为数值类型:

  • 用CHARINDEX('RS ', i.clientIncome)判断文本是否包含Rs标识
  • 若存在标识,用SUBSTRING截取Rs后到/-前的金额字符串,通过replace去掉金额中的逗号分隔符,再用CAST转换为NUMERIC数值类型
  • 若不存在Rs标识,返回NULL
SELECT i.clientIncome,
       CASE
           WHEN CHARINDEX('RS ', i.clientIncome) != 0 THEN
               CAST(replace(SUBSTRING(
                    i.clientIncome,
                    CHARINDEX('RS ', i.clientIncome) + 3,
                    CHARINDEX('/-', i.clientIncome) - CHARINDEX('RS ', i.clientIncome) - 3
                    ),',','') AS NUMERIC)
           ELSE
               NULL
       END income
FROM #income AS i;

4. 清理临时表

操作完成后删除临时表,释放数据库资源:

DROP TABLE #income;

内容的提问来源于stack exchange,提问作者Sridhar Babu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:35:29