用于分析Text的SQL查询

时间:2009-12-04 18:47:27

标签: sql regex tsql fuzzy-comparison

我有一张有订单号,取消日期和理由的表。 Reason字段是varchar(255)字段,它由许多不同的销售代表编写,并且很难根据我需要生成报告来分类取消原因的类别进行分组。使用TSQL分析原因的最佳方法是什么?

销售代表输入的原因示例

cust already has this order going out
cust can not hold for item Called to cancel order
cust doesn't want to pay for shipping
wife ordered same item from different vendor, sent email
cst made a duplicate order, sent email
cst can't hold
Cust doesn't want to go through verification process so is cancelling order
doesn't ant to hold  for Bo
doesn't want
Cust called to cancel the order  He can no longer get the product he wants 
cnt hld
will not comply with export req
cant' hold
Custs request
Cust will not hold for BO
per. cust. request.

BTW我有SQL Server 2005。

3 个答案:

答案 0 :(得分:4)

你的部分问题是,这些不是真正的原因代码。听起来像你的架构问题。如果没有预定义的原因代码可供参考,并且你允许自由文本输入的每个原因,那么除了拉回明显的原因之外,实际上没有办法直接这样做,这可能不会非常有用。 / p>

只是一个想法,你可以在表中添加另一列,即使它在临时或测试环境中,然后给业务用户分配代码的能力(例如1用于错误发送,2用于重复订单, 3对于错误的项目等)每个订单取消。然后对此进行分析。

我认为这是他们对你的期望,但我不知道我看到了更好的方式。如果你有权威/知识,你总是可以自己进行分析,但如果你有大量的取消,这可能会很痛苦。

编辑 - 我现在看到你用正则表达式标记了这个...可以设置指定的关键字来提取条目,但必须内置一些容差并且之后仍然需要手动分析由于拼写错误等而未归入任何指定类别的项目/编辑

答案 1 :(得分:1)

+1 @jmatthews,你真的需要有选择的原因代码,然后可能出于完整的原因允许自由格式输入。

如果这不是一个选项,您可以查看text clustering。不要指望它快速或简单,它仍然是一个开放的研究课题,与人工智能和机器学习有关。

答案 2 :(得分:1)

查看SSIS中的Term Lookup, here is an article 进行阅读。