我可以: 邀请好友来看>>
ZOL星空(中国) > 技术星空(中国) > MySQL星空(中国) > mysql中如何识别记录中的tab键,回车键?
帖子很冷清,卤煮很失落!求安慰
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

mysql中如何识别记录中的tab键,回车键?

112浏览 / 3回复

1
精华
309
帖子

等  级:Lv.1
经  验:0
  • Z金豆:

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:
  • 注  册:
  • 登  录:
发表于 2009-05-19 16:56:41
电梯直达 确定
楼主
mysql中如何识别记录中的tab键,回车键?

比如下列code a到where之间,应该就有个tab键或回车键:
+-------------------------------------------------------+
| trim(sql_text)                                                |
+-------------------------------------------------------+
| select count(*) from code a               where |
| status <> 'D'                                                 |
+-------------------------------------------------------+


精华

帖子

等  级:Lv.1
经  验:0
发表于 2009-05-19 16:57:03 1楼
对 楼主 .老牛 说:
=========================

好像不能,没有这样的函数。

你的目的是啥?


精华

帖子

等  级:Lv.1
经  验:0
发表于 2009-05-19 16:57:22 2楼
偶已经搞定了:

delimiter //
drop function if exists sql_clearspace//

create function sql_clearspace(v_sql varchar(4000))
  returns varchar(4000)
begin
  declare v_tmps varchar(4000) default \'\';
  declare v_last varchar(2) default \'\';
  declare v_curr varchar(2) default \'\';
  declare v_num int default 0;
  declare v_max int default 0;
  
  set v_max = length(v_sql);
  while v_num <> v_max do
    set v_num = v_num + 1;
    set v_curr = substr(v_sql, v_num, 1);
    
    if (v_curr = char(9) or v_curr = char(10)) then
      set v_curr = char(32);
    end if;
    
    if (v_curr <> char(32) and (v_last is null or v_last <> char(32))) then
      set v_tmps = concat(v_tmps, v_curr);
      set v_last = v_curr;
    elseif (v_last <> char(32) and v_curr = char(32)) then
      set v_tmps = concat(v_tmps, v_curr);
      set v_last = v_curr;
    elseif (v_last = char(32) and v_curr <> char(32)) then
      set v_tmps = concat(v_tmps, v_curr);
      set v_last = v_curr;
    end if;
  end while;
  
  return v_tmps;
end//

delimiter ;


mysql> select sql_clearspace(\'select count(*) from code a                     where status <> 1\');
+-------------------------------------------------------------------------------------+
| sql_clearspace(\'select count(*) from code a                     where status <> 1\') |
+-------------------------------------------------------------------------------------+
| select count(*) from code a where status <> 1                                       |
+-------------------------------------------------------------------------------------+
1 row in set (0.01 sec)







lihui8852

lihui8852


精华

帖子

等  级:Lv.5
经  验:5527
发表于 2009-05-31 21:08:02 3楼
支持
高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表