ERROR 1064 (42000): You have an error in your SQL syntax;

25 篇文章 0 订阅
11 篇文章 0 订阅

今天在mysql执行一个sql语句,报错:

mysql> select sum(xxxx) from xxxx where dm='dbm' and DATE_FORMAT(sj,'%Y-%m') = DATE_FORMAT('sj$','%Y-%m');
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select sum(xxxx) from xxxxx where dm='dbm' and DAT' at line 1

报的错误有点看不懂,仔细检查sql,并没有语法错误,于是自己手敲了一遍,发现可以正确执行。

于是,将报错的和手敲的放到txt里面,没有发现不同,怀疑是有不可见的字符,拷贝到linux里面,用cat -A查看,发现了问题:

# cat -A a.txt
selectM-BM- sum(xxxxx) fromM-BM- xxxxxxx-BM- whereM-BM-
select sum(xxxxx) from formtable_main_125 where

发现上面的sql,多了一些M-BM-字符。

如何替换呢?用16进制:

# cat -A b.txt
selectM-BM- sum(xxxxx)
# od -tcx1 b.txt
0000000   s   e   l   e   c   t 302 240   s   u   m   (   x   x   x   x
         73  65  6c  65  63  74  c2  a0  73  75  6d  28  78  78  78  78

解决方法:
可以用sed命令处理一下文件,命令如下:
sed 's/\xc2\xa0/ /g' -i 文件路径  
就可以把"M-BM-" 替换成空格。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值