table:field1,field2
给出偏移量&我希望结果是:
select substr(concat(field1,field2),offset,len) from table
因为field1和field2是大型varchars并且这个查询是一个瓶颈我不想连续地将两个大字段连接起来而宁愿做一些事情
select case when (offset+len) < length(field1) then substr(field1,offset,len) else....
有三种不同的情况:1)field1的substr,2)field2的substr 3)与substr(field2)结合的substr(field1)
任何人都有这个脑力激荡器的解决方案?谢谢!
答案 0 :(得分:0)
MySQL有一个IF
函数,可以使查询比使用CASE结构更清晰。
你写它的任何方式,它都很昂贵。为什么不创建另一列(去冗余!)并在那里保存正确的值?冗余现在不是问题,它比任何类型的concat,case或者快得多。
(如果offset
不是静态的,这不是解决办法。如果offset
是,len
不是, 仍然是解决方案。)