首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文本挖掘以了解诊断信息在SQL中是否已通过或失败

文本挖掘以了解诊断信息在SQL中是否已通过或失败
EN

Stack Overflow用户
提问于 2018-10-10 03:43:23
回答 1查看 39关注 0票数 0

我正在尝试构建一个诊断报告,以检查诊断是否通过或失败。但我面临着一个挑战,因为员工使用不同的方式记录结果。条目示例:

  1. 诊断:不通过
  2. 诊断:不失败
  3. 诊断: Pass
  4. 诊断: Pass

有一段时间,他们在诊断结果输入之前插入一些其他单词。

如何使它作为标志-检查诊断是否已通过或失败。

在SQL中,任何建议都将是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2018-10-10 14:05:12

实现这一目标的一种方法是使用PATINDEX并替换。如果没有您提到的15种不同模式的完整列表,我无法完全评估您所面临的问题,但下面是一个示例。

帕廷德克斯:返回模式在指定表达式中第一次出现的起始位置,如果没有找到该模式,则返回所有有效文本和字符数据类型上的零。 替换:将指定字符串值的所有出现替换为另一个字符串值。

下面是一个示例:

代码语言:javascript
复制
DECLARE @Diagnostic TABLE
    (
        [DiagText] NVARCHAR(200)
    );

--Insert some example test data
INSERT INTO @Diagnostic (
                            [DiagText]
                        )
VALUES ( 'Diagnostics : Not Pass' )
     , ( 'Diagnostics : Not Fail' )
     , ( 'Diagnostics : Pass' )
     , ( 'Diagnostics: Pass' )
     , ( 'Diagnostics: Fail' )
     , ( 'SomeOtherText' );

--use a case statement to evaluated the different patterens, along with using replace to take out all spaces.
SELECT *
     , CASE WHEN PATINDEX('%:NotPass%', REPLACE([DiagText], ' ', '')) <> 0 THEN
                0
            WHEN PATINDEX('%:NotFail%', REPLACE([DiagText], ' ', '')) <> 0 THEN
                1
            WHEN PATINDEX('%:Fail%', REPLACE([DiagText], ' ', '')) <> 0 THEN
                0
            WHEN PATINDEX('%:Pass%', REPLACE([DiagText], ' ', '')) <> 0 THEN
                1
       END AS [Passed]
FROM   @Diagnostic
WHERE  PATINDEX('%Diagnostics%', [DiagText]) <> 0;  --This filters for those containing the Diagnoctics verbiage
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52732293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档