数据库
首页 > 数据库> > ERROR 1064 (42000): You have an error in your SQL syntax;

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

作者:互联网

今天在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-" 替换成空格。

标签:BM,sum,SQL,1064,syntax,ERROR,txt,xxxxx,78
来源: https://blog.csdn.net/g13731463274/article/details/121229745