【发布时间】:2016-03-28 11:43:42
【问题描述】:
我有一个包含以下值的表
ACCNO TEXT
------------- ----------------
8611004050001 internal payment
861100405000X external payment
8611XXXXXXXXX other payments
假设如果 accono 是 8611004050002 那么我必须 pic 外部付款。 如果 accno 是 8611211216223 那么我必须得到其他付款。
我需要得到最接近的匹配值是单个 sql 我用 case 语句尝试过它不起作用。实现这一目标的有效方法是什么。
请帮帮我
【问题讨论】:
-
...您的表的设计意味着一个多部分键,这将违反推荐的最佳实践。至少,它还要求您知道密钥的结构很重要,这将是一个相关的问题。根据您未来的需求,可能需要更改设计。
-
这是要求,我不能改变设计..这个表就像一个控制表,基于这一行(accno)他们想选择一些值..我没有在这里给出完整的表结构
-
我可以在程序中实现这一点(使用循环和多个 sql 语句),但如果我能够在单个查询中做到这一点,它将提高性能..
-
通常在一个语句中做事效率更高。不幸的是,由于数据的结构,几乎所有内容都可能为此生成表扫描 - 您尝试查询的内容不利于索引。如果您有正确设计的表格,这将更容易和更快。哦,我假设传递像
8724114159901这样的帐户应该不会导致您的示例行被选中。另外,这些组的静态性如何?它总是前 4 个字符,除了最后一个字符之外的所有字符吗?还是每次都变? -
您的帐号字符串中是否有非数字字符值?