mysql的数据库值问题

问题描述

我在设计数据库的时候,定义一张表的主键为id 类型varchar 长度为25 为当前时间+随机码生成的一串数字;但是在查询的时候有:比如 select * from table where id = 201008171424530375 这个数字就出不来结果非要改成select * from table where id = '201008171424530375' 但是我的主键都是通过程序生成的,不是所有的结果都会这样,其他的很多类似 select * from table where id = 201008171424530376 这样的查询不用''都是可以找到结果的,请问这是什么原因造成的? 问题补充:飞雪无情 写道

解决方案

引用飞雪无情 写道就是你的in里有10个id,都没有加引号,比如 in(123,1231,34234,4545,346436,....),然后结果出来九条是吧?难道是in函数认为前面的九个条件可以加引号,也可以不加,只是最后一个比较的时候因为没加引号所以查询不到了。。哈哈 你的这种想法我也想到了,我单独的改变了IN里面的顺序,起结果还真就是那个楼市找不到,不管它排第几,当然咯这里只是用楼市来调试 随便改变顺序还是楼市。。嘿嘿。我观察了,你的楼市的id是最小的,也就是第一个数据。。估计就是因为这,谁是第一个数据谁倒霉,别管inli的id顺序,就查不到第一个。。嘿嘿
解决方案二:
引用非也非也哦,我单个查询的时候 如果查询的不是楼市那个,照样可以查询出来 哈哈,太搞笑了 祁门怪事。。。唉。还是用标准方式吧。全加引号。。OK
解决方案三:
弱弱的问下下: 那个 楼市的 ID 是否后面有个空格呢?
解决方案四:
引用你可以看下我传上来的图片附件,比如我找楼市不带引号就找不到,找其他的不带引号却可以得到结果 你这说的是in查询的情况下吧。单个查询这样select * from table where id = 201008171424530375都查不到吧?这个比较怪异。不过还是我刚开始说的,如果你是varchar的,就是使用引号,都使用。。这样标准。也能解决你的问题
解决方案五:
就是你的in里有10个id,都没有加引号,比如 in(123,1231,34234,4545,346436,....),然后结果出来九条是吧?难道是in函数认为前面的九个条件可以加引号,也可以不加,只是最后一个比较的时候因为没加引号所以查询不到了。。
解决方案六:
引用比如 select * from table where id = 201008171424530375 这个数字就出不来结果非要改成select * from table where id = '201008171424530375' 引用如果是我都没带上引号应该所有的值都不会找到啊,怎么会找到了那么多你这两个有矛盾啊。你一开始命名说的不加引号就出不来结果的,怎么后来变了。。不加引号就应该没有结果的。。
解决方案七:
你定义的是 varcharselect * from table where id = ‘201008171424530376’统一 按这个标准写法就 OK !
解决方案八:
这个问题确实很奇怪,可能和MySql自身的机制有关,你按标准语法写,暂时解决这个问题。既然类型为varchar,那么就加上单引号,这才合乎语法。
解决方案九:
因为你的“主键为id 类型varchar ” 类型是varchar。。所以必须加上引号。。定义成bigInt就好了

时间: 2024-11-18 14:27:58

mysql的数据库值问题的相关文章

【转载】低成本和高性能的MySQL云数据库的实现淘宝 MySQL

低成本和高性能的MySQL云数据库的实现 作者: 鸣嵩/曹伟(集团技术专家) 本文刊登于<程序员>杂志2012年12期上,转载请注明         UMP(Unified MySQL Platform)系统是淘宝核心系统数据库团队开发的低成本和高性能的MySQL云数据方案,关键模块采用Erlang语言实现.系统中包含了controller服务器.proxy服务器.agent服务器.API/Web服务器.日志分析服务器.信息统计服务器等组件,并且依赖于Mnesia.LVS.RabbitMQ.Z

MYSQL表达式求值和MYSQL类型转换

    2.4 表达式求值和类型转换    MySQL允许编写包括常量.函数调用和表列引用的表达式.这些值可利用不同类型的运算符进行组合,诸如算术运算符或比较运算符.表达式的项可用圆括号来分组.表达式在SELECT 语句的列选择列表和WHERE 子句中出现得最为频繁,如下所示:    所选择的每列给出了一个表达式,如WHERE 子句中所示的那样.表达式也出现在DELETE 和UPDATE语句的WHERE 子句中,以及出现在INSERT 语句的VALUES( ) 子句中.    在MySQL遇到一

linux操作系统下建立mysql镜像数据库

mysql|数据|数据库 MySQL 版本:4.1 环境介绍:主库 192.168.0.205 从库 192.168.0.206 1.主库创建/etc/my.cnf,修改[mysqld]里边的键值增加 server-id=1 log-bin=binlog_name 2.主库增加用户,用于从库读取主库日志. grant replication slave,reload,super on *.* to 'slave'@'192.168.0.206' identified by '123456' 3.

用MySQL创建数据库和数据库表

mysql|创建|数据|数据库     了解了一些最基本的操作命令后,我们再来学习如何创建一个数据库和数据库表. 1.使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test | +----------+ 3 rows in set (0.00 sec) 2.创建一个数据库abccs mysql> CREATE DATABASE abccs;

Linux下建立Mysql镜像数据库

mysql|数据|数据库 MySQL 版本:4.1 5.启动从库,进行主从库数据同步 以下为引用的内容:/opt/mysql/share/mysql/mysql start /opt/mysql/bin/mysql -u root -p  mysql>load data from master; 说明:这一步也可以用数据库倒入或者直接目录考过来. 6.进行测试: 主库创建表, 以下为引用的内容:mysql>create database sampdb; mysql>create tabl

SQL Server、Oracle和MySQL中查出值为NULL的替换

在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办? 1.MSSQL: ISNULL() 语法 ISNULL ( check_expression , replacement_value ) 参数 check_expression 将被检查是否为 NULL的表达式.check_expression 可以是任何类型的. replacement_value 在 check_expression 为 NULL时将返回的表达式.replacement_value 必须与

MySQL主从数据库同步延迟问题解决

MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以切换到从服务器. 相信大家对于这些好处已经非常了解了,在项目的部署中也采用这种方案.但是MySQL的主从同步一直有从库延迟的问题,那么为什么会有这种问题.这种问题如何解决呢? 1. MySQL数据库主从同步延迟原理. 2. MySQL数据库主从同步延迟是怎么产生的. 3. MySQL数据库主从同步延

MYSQL进行数据库备份

使用MYSQL进行数据库备份,有很正规的数据库备份方法,同其他的数据库服务器有相同的概念,但有没有想过,MySQL会有更简捷的使用文件目录的备份方法,而且又快有好.  一.数据备份捷径  因为这个方法没有得到官方正式文档的验证,我们暂称为试验吧.  目的:备份hostA主机中一个MySQL数据库TestA,并恢复到到hostB机中  试验环境: Chinaz^com 操作系统:WinNT4.0,MySQL3.22.34,PHPMyAdmin 2.1.0 中.国.站.长.站 在hostA中安装My

PHP 16: MySql的数据库访问

原文:PHP 16: MySql的数据库访问本章介绍PHP访问MySql的方法.如果你对MySQL不是很清晰,可以参看PHP 17: MySQL的简单介绍.对于数据库的操作,无非就是以下几个点: 如何连接到数据库 如何执行SQL 如何返回数据结果集 如何从结果集取出数据 关闭连接  以上就是数据库的常规操作.对于MySQL而言,由于其版本不同,访问数据库的方法也不同.PHP4有个MySQL一般的访问方法,过程都是以"mysql_"为前缀的.当到了PHP5,除了它,还扩展了这个方法.并且