回答

收藏

根据业务逻辑获取第一个合并结果

技术问答 技术问答 245 人阅读 | 0 人回复 | 2023-09-12

我的表T1看上去像这样:4 L9 k5 l( i3 w+ Z& i$ ?5 F3 \) C
ID  VALUE---------- 12  12  323  425  425 86  627  438  3448   3438    34434我的第二个T看上去像这样:
! R+ l) j# y; Z1 E  {* {+ ^ID  DEFINITION---------------1   A|B|C    2   er|All|All|B  3   All|All|All  4    All|bela|All 5   All|All|All|G6   A|All|All7   All|B|All 8   Av|All|All|G表后面的业务逻辑是在传输字符串时应用最具体的应用DEFINITION,并应检索各自的值。全部可以解释为%”。“ |”+ e2 e* N. |5 g; v3 }1 s+ |6 W6 L
它只是一个分隔符,它定义了你实际传递的值。每个字符串都可以是任何东西…
; V" R- R% D" ?8 l8 Y' X例如,如果我把它定义为’X | B | Z’->如果我有,值应该是7。’A | B |- q2 w' p+ F. a$ s# y. E: E: Y$ _( }
C’->值为1(不是1,6,7)-最具体的结果应该从右边的假期水平开始。
: h, I  @8 [. p0 p* r; i我问过一个非常相似的问题(SQL
% V! ~3 H: f) NServer:获得第一个连接值),获得这个优秀的解决方案Gordon
6 T( Q$ Y0 z0 ALinnof,但不幸的是,它涵盖了不止三个维度。我现在在表中有一个新的值,可以有更多的子字符串。% {1 ^$ X7 K5 y6 G! N
动态获得正确值的方法有哪些?
6 t! u# H, @! t: `. N# Y1 j- ?select top (1) t.*from twhere @str like replace(t.definition,'Allorder by (case when t.definition like '%All%All%All%' then  3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   when t.definition like '%All%All%' then                                                               when t.definition like '%All%' then             else         end) asc;编辑:我需要为这个问题添加更多的细节,因为Habo添加了一些有效的注释:字符串值表示字母数字ID的egT34或ABC78,可以是varchar(255)。* C4 m: M# Z' C3 y3 O. d
所有值越少,越具体-这是正确的选择。# t0 l0 p, j& k  X
                                                               
* C7 e- \3 r5 \0 w; U1 Y    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则