一个MySQL查询,用于获取两个字段的substr,在整个字段中没有concat

时间:2011-04-16 22:17:41

标签: mysql sql select substr

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)

任何人都有这个脑力激荡器的解决方案?谢谢!

1 个答案:

答案 0 :(得分:0)

MySQL有一个IF函数,可以使查询比使用CASE结构更清晰。

你写它的任何方式,它都很昂贵。为什么不创建另一列(去冗余!)并在那里保存正确的值?冗余现在不是问题,它比任何类型的concat,case或者快得多。

(如果offset不是静态的,这不是解决办法。如果offset是,len不是, 仍然是解决方案。)