首页 > 解决方案 > 如何在 t-sql 中使用 patIndex 删除右括号

问题描述

下面是我用来测试我的 patindex 的选择。我正在尝试删除所有特殊字符,但返回的结果集如下所示。本质上,会计格式存在一些负数。我需要删除这种格式,让它只是数字(102.00 美元)。

Sql:
[
0.00,
$102.00)]
select  cast(rtrim(ltrim(Replace([Amount],SUBSTRING([Amount],patindex('%[^0-9]%',[Amount]),1),'') ) )as varchar) from Temp2

有谁知道如何删除该关闭)?我尝试了一堆正则表达式,但我无法让它消失。

任何帮助将不胜感激。

编辑:我的道歉。我正在使用 Sql Server 我从[$0.00,($25.00)] 上面得到。我需要它看起来像[0.00,25.00]

我尝试了一个 patindex of '%[()]%'or this '%[\(\)%]',它只删除了第一个。如果我翻转它,它只会删除右括号,但不会删除左括号。还有一堆其他的组合。

标签: sqlsql-serverregextsql

解决方案


您可以使用 Replace 3 次来删除不需要的字符。

Declare @s varchar(100)
Select @s = '[$0.00,($25.00)]'
Select @s as original,  Replace(Replace(Replace(@s,'$',''),'(',''),')','') as cleaned

如果您需要将其应用于表中的列(例如 Amount),而不是 @s,请在 SQL 查询中使用该列名

Select ...., Replace (.... <<Amount>> ) from yourTable

这是小提琴


推荐阅读