首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >mysql查询不识别字符串

mysql查询不识别字符串
EN

Stack Overflow用户
提问于 2016-03-11 14:48:52
回答 2查看 1.3K关注 0票数 2

我有一个包含varchar(50)列= name的表。我已经从本地csv文件中上传了值,因此表如下所示。导入中没有错误/警告,而且我导入了其他格式相同的csv文件(Windows分隔的),而没有出现此问题。

代码语言:javascript
运行
AI代码解释
复制
***************
ID * columnName
***************
1  * any
2  * thing
3  * helpful

当我跑步时:

代码语言:javascript
运行
AI代码解释
复制
SELECT * FROM myDB.tableName;

我看到了上面所示的桌子。但是,当我运行时:

代码语言:javascript
运行
AI代码解释
复制
SELECT * FROM myDB.tableName WHERE columnName = "any";

我没有退货。如果然后通过以下方法覆盖表中加载的csv值:

代码语言:javascript
运行
AI代码解释
复制
UPDATE myDB.tableName SET columnName='any' WHERE ID= 1;

然后运行相同的查询,然后按预期返回行。因此,在此,我有两个问题:

  1. 如何防止csv上传不被识别为字符串的值?
  2. 如何大容量更新columnName中当前加载的所有值以被识别为字符串(由于受影响的行太多,所以无法执行以上所示的单个更新)?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-11 15:18:30

如果.csv文件来自Windows,则该文件可以使用CRLF作为行分隔符。

如果加载数据指定了LINES TERMINATED BY '\n',那么您可能会将CR字符作为最后一列的一部分。

这也有可能是你捡到了后面的空间。

那只是猜测而已。

如果是这样的话,您可能需要您的加载数据来指定CRLF作为行终止符,并且您还可能希望通过一个TRIM函数运行最后一个字段。

我从Windows上创建的.csv文件中加载的数据如下所示(摘录,不完整):

代码语言:javascript
运行
AI代码解释
复制
LOAD DATA ...
... 
LINES TERMINATED BY '\r\n'
...
( id
, @fld2
)
SET columnName = TRIM(@fld2)

要从负载中调试当前存储在列中的内容,可以使用HEX函数。(这是我在MySQL中发现的最接近甲骨文风格的DUMP()函数。)

使用latin1字符集,CR字符显示为x'0D‘。空格为x'20‘,制表符为x'09’。

代码语言:javascript
运行
AI代码解释
复制
SELECT HEX('abc'), HEX('abc \t\r')

HEX('abc')   HEX('abc \t\r')  
----------   -----------------
61 62 63     61 62 63 20 09 0D

因此,要检查存储的内容,可以运行如下所示:

代码语言:javascript
运行
AI代码解释
复制
SELECT columnName, HEX(columnName) 
  FROM mytable
 WHERE id = 1

在此基础上,可以对LOAD DATA语句进行适当的调整。

使用将字段加载到用户定义变量中的技术(如我的示例LOAD DATA所示,将字段内容加载到@fld2中),您可以使用SET子句将表达式分配给列。表达式可以使用任意数量的内置MySQL函数。例如,从字符串中移除制表符。

代码语言:javascript
运行
AI代码解释
复制
  SET columnName = REPLACE(@fld2,'\t','')
票数 2
EN

Stack Overflow用户

发布于 2016-03-11 15:03:23

我同意@bitfiddler的观点,你的数据似乎包含空格或不可打印的字符。如果无法清除添加的数据,则执行

代码语言:javascript
运行
AI代码解释
复制
UPDATE myDB.tableName SET columnName=TRIM(columnName) 

将对现有数据进行大容量更新,但如果数据集很大,则可能需要一段时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35951305

复制
相关文章
MySQL字符拼接_mysql查询字符串拼接
mysql自带语法CONCAT(string1,string2,…),此处是直接把string1和string2等等的字符串拼接起来(无缝拼接哦)
全栈程序员站长
2022/11/10
6K0
MySQL字符拼接_mysql查询字符串拼接
MySQL 查询结果中处理字符串
但是如果查询过程中有一个字符串为 null 则整个结果都将是 null ,这时可以将 null 转换为 “
zucchiniy
2019/10/30
4.3K0
mysql字符串截取指定字符串_sql查询截取字符串
一、MySQL中字符串的截取 MySQL中有专门的字符串截取函数:其中常用的有两种:substring_index(str,delim,count) 和concat 1.substring_index(str,delim,count) 函数的使用较为普遍。 函数括号里面的依次为:要分隔截取的字符串(如:”aaa_bbb_ccc”)、分隔符(如:“_”)、位置(表示第几个分隔符处,如:“1”)。 count为正数,那么就是从左边开始数,函数返回第count个分隔符的左侧的字符串; count为负数,那么就是从右边开始数,函数返回第count个分隔符右边的所有内容; count可以为0,返回为空。
全栈程序员站长
2022/11/10
4K0
mysql 联合查询_MySQL联合查询
联合查询:union,将多次查询(多条select语句)的结果,在字段数相同的情况下,在记录的层次上进行拼接。
全栈程序员站长
2022/06/29
18.9K0
mysql 联合查询_MySQL联合查询
Mysql慢查询_mysql并发查询慢
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。
全栈程序员站长
2022/11/07
17.8K0
Mysql慢查询_mysql并发查询慢
Mysql——查询
查询指定范围内的条件记录,将所有的查询条件用括号括起来。每个条件之间用逗号隔开,只需要满足其中一个条件的值就算做匹配项
羊羽shine
2019/05/29
26.2K0
白话设计模式之委托模式,老板委托你干活,是给你福报,别不识好歹!
在现实生活中,委派这个词可谓是随处可见,比如在我高一毕业时,去一个连锁婚纱店当推销员,前几天一直出去发传单,找人拍婚纱照,干了几天后,那个女二把手老板 就给我说,上级老板安排整理资料,需要找个员工来整理,她说觉得我可爱,就叫我整理了,这明显就是她自己不想整理,所以叫我整理,人在屋檐下,哪有不低头,所以就含泪整理了,不过后来干了没多久,受不了那种气氛,连夜提桶跑路了。
小四的技术之旅
2022/07/26
3500
mysql慢查询优化方法_MySQL查询优化
’mysql慢查询优化 第一步:开启mysql慢查询日志,通过慢查询日志定位到执行较慢的SQL语句。 第二步:利用explain关键字可以模拟优化器执行SQL查询语句,来分析SQL查询语句。 第三步:通过查询的结果进行优化。
全栈程序员站长
2022/11/07
14.7K0
mysql慢查询优化方法_MySQL查询优化
MySQL 子查询 嵌套查询
意思就是内层的select查到了(至少查到了一行)才进行查询,没有查到就不进行查询。
宁在春
2022/10/31
12.2K0
MySQL(联合查询、子查询、分页查询)
2.每列的数据类型必须一致,【查询语句1中字段列表的类型必须和查询语句2中的字段列表类型对应且一致】
全栈开发日记
2022/05/12
16.5K0
MySQL(联合查询、子查询、分页查询)
MySQL 基本查询、条件查询、投影查询
条件运算按照NOT、AND、OR的优先级进行,即 NOT 最高,其次AND,最后OR 加括号 可以改变 优先级
Michael阿明
2020/07/13
11.2K0
MySQL 基本查询、条件查询、投影查询
mysql分页查询倒序_【Mysql笔记】MySQL实现分页查询[通俗易懂]
一般情况下,客户端通过传递 pageNo(页码)、pageSize(每页条数)两个参数去分页查询数据库中的数据,在数据量较小(元组百/千级)时使用 MySQL自带的 limit 来解决这个问题:
全栈程序员站长
2022/07/30
11.8K0
mysql慢日志查询_mysql开启慢查询日志
然后执行一条sql语句,执行时间大于你所设置的long_query_time,我执行了一条sql语句执行时间为1.468s
全栈程序员站长
2022/11/04
7.1K0
ESXI 不识别硬盘
XRSec
2023/08/23
6970
mysql省市区递归查询_mysql 递归查询
) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8;
全栈程序员站长
2022/07/02
10.9K0
mysql省市区递归查询_mysql 递归查询
mysql的查询、子查询及连接查询
一、mysql查询的五种子句 where(条件查询)、having(筛选)、group by(分组)、order by(排序)、limit(限制结果数) 1、where常用运算符: 比较运算符 > , < ,= , != (< >),>= , <= in(v1,v2..vn) between v1 and v2 在v1至v2之间(包含v1,v2) 逻辑运算
java达人
2018/01/31
12.4K0
MySQL查询优化
通过上述参数可以了解当前DB应用是插入更新为主还是查询为主,以及各类的SQL执行比例。
JavaEdge
2021/10/18
1.6K0
mysql查询优化
很多传统型的公司的数据量都比较小,并且没有DBA这个岗位去对你开发项目中的sql进行一个最终的审核,导致开发的时候写了一些慢sql,数据量小的时候可能还好,一旦数据量上来了,查询效能极低,并且请求次数过多的话很可能会因为这一个慢sql把你整个系统拖垮,不能正常对外提供服务
炒香菇的书呆子
2022/04/14
1.3K0
MySQL多表查询
内连接:找两张表共有的部分,相当于利用条件从笛卡尔积结果中筛选出了正确的结果。(只连接匹配的行)
星哥玩云
2022/08/18
2.2K0
MySQL查询优化
通过上述参数可以了解当前DB应用是插入更新为主还是查询为主,以及各类的SQL执行比例。
JavaEdge
2021/12/07
1.6K0
MySQL查询优化

相似问题

MySQL查询不识别PHP变量

10

Python脚本不识别Mysql查询

21

SQL查询到mysql (Subquery不识别外部表)

21

MySQL不识别图像

13

MYSQL多选同一类别?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文