【问题标题】:SQL Server string parse?SQL Server 字符串解析?
【发布时间】:2021-02-18 16:09:09
【问题描述】:
DROP TABLE IF EXISTS #test

CREATE TABLE #test 
(
     line VARCHAR(500)
)

INSERT INTO #test (line)
VALUES ('1194125598,,191,3.95,194.95,Loan Payment,999999999,2779,"Melinda","Meeken",99999999,"m_welborn@yahoo.com , smeeken@gmail.com",10/28/2020 11:13')
        

SELECT 
    line,
    REPLACE(line,'%"%,%"%', '%"%|%"%')
FROM #test t

我有来自字符串的供应商信息,我正在尝试更新#line 以删除两封电子邮件之间的逗号 (,)。有人有什么建议吗?

所需输出:'1194125598,,191,3.95,194.95,Loan Payment,999999999,2779,"Melinda","Meeken",99999999,"m_welborn@yahoo.com smeeken@gmail.com",10/28/2020 11:13'

【问题讨论】:

  • “试图删除”并没有明确定义您的目标是什么。您是否尝试更新此专栏的内容?如果是这样,更新后的值应该是多少?如果不是,你的“下架”最终结果应该是什么?
  • 编辑了问题。但尝试更新#Line 以删除两封电子邮件之间的多余逗号。
  • 我仍然不知道你想要什么。您能否展示您想要的输出,您想要发生但没有发生的事情?你知道 SQL 不支持正则表达式吗?为什么还要将所有数据放在一列中?
  • 逗号两边总是有空格吗?也许你可以逃脱 REPLACE(line,' , ', '')
  • @codeulike tbh 我不确定空格的一致性,因为我从供应商那里接收信息,解析字符串数据并分离每个字段以便稍后用作动态插入到表中跨度>

标签: sql sql-server string-matching


【解决方案1】:

假设只有两封电子邮件和一个逗号,请尝试以下操作:

DECLARE @Test table ( line varchar(500) );
INSERT INTO @Test VALUES
    ( '1194125598,,191,3.95,194.95,Loan Payment,999999999,2779,"Melinda","Meeken",99999999,"m_welborn@yahoo.com , smeeken@gmail.com",10/28/2020 11:13' );

SELECT
    STUFF (
        line,
        CHARINDEX ( ',', line, CHARINDEX ( '@', line ) ),
        1,
        ''
    ) AS new_line
FROM @Test;

返回

+-----------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                   new_line                                                                    |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
| 1194125598,,191,3.95,194.95,Loan Payment,999999999,2779,"Melinda","Meeken",99999999,"m_welborn@yahoo.com  smeeken@gmail.com",10/28/2020 11:13 |
+-----------------------------------------------------------------------------------------------------------------------------------------------+

【讨论】:

    猜你喜欢
    • 2021-03-28
    • 1970-01-01
    • 2023-03-22
    • 2021-03-02
    • 2010-10-13
    • 1970-01-01
    • 2021-12-09
    • 2015-05-13
    • 2015-01-02
    相关资源
    最近更新 更多