文本挖掘以了解SQL中的诊断是否已通过或失败
我正在尝试构建诊断报告,以检查诊断是否通过或失败。但我面临一个挑战,因为员工使用不同的方式记录结果。条目示例:文本挖掘以了解SQL中的诊断是否已通过或失败,sql,sql-server,Sql,Sql Server,我正在尝试构建诊断报告,以检查诊断是否通过或失败。但我面临一个挑战,因为员工使用不同的方式记录结果。条目示例: 诊断:未通过 诊断:没有失败 诊断:通过 诊断:通过 有时,他们会在输入诊断结果之前插入一些其他单词 如何将其设置为标志-以检查诊断是否通过或失败 在SQL中,任何建议都将受到极大的欢迎。您可以通过使用PATINDEX和REPLACE来实现这一点。如果没有你提到的15种不同模式的完整列表,我无法完全评估你面对的是什么,但这里有一个例子 :返回第一个匹配项的起始位置 指定表达式中的模式,
在SQL中,任何建议都将受到极大的欢迎。您可以通过使用PATINDEX和REPLACE来实现这一点。如果没有你提到的15种不同模式的完整列表,我无法完全评估你面对的是什么,但这里有一个例子 :返回第一个匹配项的起始位置 指定表达式中的模式,如果该模式不可用,则为零 在所有有效的文本和字符数据类型上找到 :将指定字符串值的所有匹配项替换为 另一个字符串值 以下是一个例子:
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
DECLARE@诊断表
(
[DiagText]NVARCHAR(200)
);
--插入一些示例测试数据
插入@Diagnostic(
[正文]
)
值('Diagnostics:Not Pass')
,(“诊断:未失败”)
,(“诊断:通过”)
,(“诊断:通过”)
,(“诊断:失败”)
,(“其他文本”);
--使用case语句计算不同的图案,并使用replace删除所有空格。
挑选*
,当PATINDEX('%:NotPass%',REPLACE([DiagText],'')0时为大小写,然后
0
当PATINDEX('%:NotFail%',REPLACE([DiagText],'',')0时,则
1.
当PATINDEX('%:Fail%',REPLACE([DiagText],'',')0时,则
0
当PATINDEX('%:Pass%',REPLACE([DiagText],'','')0时,则
1.
结束[通过]
来自@Diagnostic
其中PATINDEX(“%Diagnostics%”,[DiagText])0--这将筛选包含诊断术语的内容
为什么不使用一些regexp?你有多少种不同的图案?有近15种不同的图案。我想做的是查看代理在哪里记录了诊断,并在提到通过或失败时用很少的空格进行检查。我正在努力检查。