繁体   English   中英

MySQL变量替换

[英]MySQL Variable Substitution

我想像使用Transact SQL一样使用动态SQL简化以下内容。

我想做类似的事情:

SET @s = replace(field_name, '_complete','')

并使用@s代替replace(field_name,'_complete','')

如果可能的话,请告知您。

我当前的代码:

 select distinct    
if(instr(replace(field_name, '_complete',''),'_') <= 5
          ,left(replace(field_name, '_complete','')
               ,instr(replace(field_name, '_complete',''),'_') - 1
              )  
          ,replace(field_name, '_complete','')    
        ) AS form_id   ,replace(
        if(instr(replace(field_name, '_complete',''),'_') <= 5,
            mid(replace(field_name, '_complete',''),
                instr(replace(field_name, '_complete',''),'_') + 1,
                length(replace(field_name, '_complete','')) - instr(replace(field_name, '_complete',''),'_')
               )
            ,replace(field_name, '_complete','')
          ),
        '_',
        ' ') as form_name     ,field_name     from redcap_extract2use    where field_name like '%_complete'   order by 1;

然后将以上内容替换为:

select distinct 
  if(instr(@s,'_') <= 5 ,left(@s,instr(@s,'_') - 1),@s ) AS form_id
  ,replace( if(instr(@s,'_') <= 5,
        mid(@s,instr(@s,'_') + 1,length(@s) - instr(@s,'_')),@s), '_',  ' ') as form_name  
  ,field_name  
  from redcap_extract2use 
  where field_name like '%_complete'
  order by 1;

我将有一个执行...来运行查询

如果我正确理解了您的问题,那么您将要使用PREPAREEXECUTE语句。

例如:

SET @s = replace(field_name, '_complete','');

PREPARE mystatement FROM
SELECT DISTINCT ...... ;

EXECUTE mystatement;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM