我正在尝试查询“标签”列中的所有唯一值。 标签列中的每一行都可以包含多个值。 因此,如果不强制进入规范化,我如何查询多值列?
示例行:
Networking
Professionalism
Time Management
Communication, Networking
Career Management, Professionalism
Networking
Communication
Attitude, Interpersonal Skills, Professionalism
Business Protocol, Career Management, Communication, Leadership
Business Protocol, Networking
答案 0 :(得分:1)
如果元素的最大数量是可预测的,您可以使用此功能(请注意,您需要使用UNION
,而不是UNION ALL
)
Select DISTINCT thefield from thetable where Instr(thefield, ',') = 0
UNION
Select Distinct Mid(thefield, 1, Instr(thefield, ',')) from thetable Where len(thefield) - len(replace(thefield,',','')) = 1
UNION
Select Distinct Mid(thefield, Instr(thefield, ',')+1) from thetable Where len(thefield) - len(replace(thefield,',','')) = 1
UNION
Select Distinct Mid(thefield, Instr(thefield, ',')+1, Instr(Instr(thefield, ',')+1,thefield, ',')) from thetable Where len(thefield) - len(replace(thefield,',','')) = 2
UNION
Select Distinct Mid(thefield, Instr(Instr(thefield, ',')+1,thefield, ',')+1) from thetable Where len(thefield) - len(replace(thefield,',','')) = 2
--.. and so on (repeat last two Selects as many time as you wish, increasing the where condition by one for each pair)
看起来有点笨重,但应该做的工作。未经测试,因此,您可能会在值
之前或之后出现迷路逗号