首页 > 解决方案 > SQL 不接受正字符串

问题描述

我正在使用 SQL Server 2012。我有一个陷阱,我得到减号并将其放在一组字符串中值的前面,但是也有没有减号的值,它们在我的专栏。我需要一种不接受这些正值的方法,因为这是一个标准过程,我只需要查询中的负值。

我的代码是

CASE 
   WHEN CHARINDEX('-', SUBSTRING([Txt], 147, 10)) > 0   
      THEN '-' + REPLACE(LTRIM(RTRIM(SUBSTRING([TXT], 147, 9))), ',','') 
END AS [Open_Amount] 

在我的查询中,正值出现为我不想要的“空值”,如果open_amount是正值,我希望忽略整行。我可以在我的案例中添加一个具体的 else 声明还是有其他方法?不幸的是,如果它有助于使用视图/交叉应用不是此数据结构的选项

标签: sqlsql-server-2012substrcharindex

解决方案


这是你想要的吗?

(case when Substring([Txt], 147, 10) like '%-%' 
      then '-' + Replace(LTrim(RTRIM(Substring([TXT], 147, 9))), ',', '') 
      else Replace(LTrim(RTRIM(Substring([TXT], 147, 9)))
 end) as [Open_Amount]
from db.txt

如果您只想保留负行,请使用:

where substring([Txt], 147, 10) like '%-%' 

推荐阅读