Tag: MySQL

如何select一个空的结果集?

我正在MySQL中使用一个存储过程,并带有一个CASE语句。 在CASE的ELSE子句中(相当于默认值:)我想select并返回一个空的结果集,这样就避免了因为不处理ELSE情况而抛出一个SQL错误,而是返回一个空的结果集,就好像一个普通的查询将不会返回任何行。 到目前为止,我已经设法使用这样的东西: Select NULL From users Where False 但是我必须命名一个现有的表,比如这个例子中的“用户”。 它的工作原理,但我宁愿更优雅的方式,如果最终使用的表名称被重命名或删除不会中断。 我试过Select NULL Where False但它不起作用。 使用Select NULL不会返回一个空的集合,而是一行具有名为NULL并具有NULL值的列。

MySQL / SQL检索文本字段的前40个字符?

我怎样才能从MySQL数据库表中检索文本字段,但不是整个文本,只有几十个左右的字符。 这可以在SQL中完成,或者我需要使用PHP来做到这一点? 基本上我试图做的是显示前x个字符,然后让用户点击,查看完整的内容。

在MySQL中存储IPv6地址

正如在“具有ipv6function的inet_aton和inet_ntoafunction需要 ”中所要求的那样,目前没有用于存储IPv6地址的MySQLfunction。 推荐的数据types/函数用于存储/插入是什么? (我不打算把它们存储为一个string)。 我也不想把IPv6地址分成2个INT。

mysqldump问题:“–defaults-extra-file”选项没有按预期工作

我从Windows命令行运行以下命令来备份我的数据库: …\right_path\mysqldump –add-drop-database –databases my_database_name –defaults-extra-file=d:\1.cnf 其中d:\1.cnf包含以下内容: [client] user="my_user" password="my_password" 不幸的是,我收到以下错误信息: mysqldump: unknown variable 'defaults-extra-file=d:\1.cnf' 如果我做: …\right_path\mysqldump –add-drop-database –databases my_database_name –user="my_user" –password="my_password" 它按预期工作。 我究竟做错了什么 ?

使用mysqldump来格式化每行一个插入?

这已被问了几次,但我找不到解决我的问题。 基本上,当使用mysqldump(这是MySQL Workbenchpipe理工具的内置工具)使用扩展插入转储数据库时,会得到大量的长数据。 我明白为什么这样做,因为它通过插入数据作为一个命令(特别是在InnoDB上)来加速插入,但格式化使得真正难以在转储文件中查看数据,或者使用diff工具比较两个文件如果您将它们存储在版本控制等。在我的情况下,我将它们存储在版本控制中,因为我们使用转储文件来跟踪我们的集成testing数据库。 现在我知道我可以closures扩展插入,所以我会得到一个插入每行,这工作,但任何时候你用转储文件进行恢复,它会变慢。 我的核心问题是,在转储文件时,我们曾经使用过的旧的工具(MySQL Administrator),它基本上做了同样的事情,但是它规定INSERT语句每行放置一个插入,而仍然进行批量插入。 所以,而不是这个: INSERT INTO `coupon_gv_customer` (`customer_id`,`amount`) VALUES (887,'0.0000'),191607,'1.0300'); 你得到这个: INSERT INTO `coupon_gv_customer` (`customer_id`,`amount`) VALUES (887,'0.0000'), (191607,'1.0300'); 无论我尝试什么select,似乎都没有办法像这样得到一个转储,这真是两全其美。 是的,它需要更多的空间,但是在需要人类阅读文件的情况下,这使得它更加有用。 我错过了什么,有没有办法用MySQLDump来做到这一点,或者我们都倒退了,旧的(现在不推荐使用的)MySQLpipe理员工具中的这个function已经不可用了?

MySQL抛出错误的string值错误

我试图将下面的tweet存储到长文本列/ utf8 charset / MySQL 5.5中。 数据库与MyISAM存储上。 我们也尝试了utf8mb4,utf16,utf32的字符集,但无法超越这个问题。 tweet="@Dorable_Dimples: Okay enough of those #IfYouWereMines I'm getting dep ressed. #foreveralone ?" lol yes mysql> ALTER DATABASE foo CHARACTER SET utf8 COLLATE utf8_bin; mysql> show variables like 'char%'; +————————–+——————————————-+ | Variable_name | Value | +————————–+——————————————-+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database […]

MySQL Sum()多列

我有一张学生记分卡。 这里是桌子, subject | mark1 | mark2 | mark3 |……|markn stud1 | 99 | 87 | 92 | | 46 stud2 |……………………………… . . studn |………………………………| 现在,我需要为每个学生总分的总和。 我通过使用sum(mark1+mark2+…+markn) group by stud得到它。 我想知道如何在不添加每个列名的情况下对其进行求和,如果达到了mark26,这将是巨大的。 所以谁能知道如何解决这个问题。 提前致谢。

如何在MySQL中正确使用CASE..WHEN

这里是一个演示查询,注意它非常简单,仅在base_price为0的位置获取,并且仍然select条件3: SELECT CASE course_enrollment_settings.base_price WHEN course_enrollment_settings.base_price = 0 THEN 1 WHEN course_enrollment_settings.base_price<101 THEN 2 WHEN course_enrollment_settings.base_price>100 AND course_enrollment_settings.base_price<201 THEN 3 ELSE 6 END AS 'calc_base_price', course_enrollment_settings.base_price FROM course_enrollment_settings WHERE course_enrollment_settings.base_price = 0 base_price是decimal(8,0) 当在我的数据库上运行这个时,我得到: 3 0 3 0 3 0 3 0 3 0

使用LIKE运算符select语句中的MySQL案例

是否有可能在一个MySQL SELECT语句中结合CASE语句和LIKE运算符? 例如,我试图查询一个数据库,以两种格式之一存储数据在一个单一的列(这是可怕的,伤了我的头,但我不能改变数据,所以它是什么)。 所以有时列numbers会有像“6901xxxxxxxx”这样的数据,有时会有像“91xxxxxxxxxxx”这样的数据。 我想要做的是查询数据像这样 – SELECT CASE digits WHEN LIKE "6901%" THEN substr(digits,4) WHEN LIKE "91%" THEN substr(digits,2) END as "digits", FROM raw 这显然是行不通的,但林希望这是可能的。

在MySQL中使用INT(1)与TINYINT(1)是否有区别?

我假设INT(1)与TINYINT(1)完全相同,但我真的不知道。 每当我的值只能是一个整数(例如值为0-9),我总是用INT(1)来表示它是一个整数,它只会是一个字符,我认为这意味着它只能是0到9的值(如果我错了,请向我解释一下)。 我总是忽略其他types的INT,你可以把这个数字作为。 我不懂MySQL,并且倾向于避免使用它可以做的更复杂的事情。 所以我的问题是,如果你为每个types定义长度为1,INT,TINYINT,SMALLINT,MEDIUMINT和BIGINT之间的各种整数types是否有区别;? 如果不是,我应该使用它们吗(我可以看到使用它们更多的语义,TINYINT比INT更具体)? 如果是这样,我可以轻松地(和/或我应该)通过我的数据库,并将我所有的INT(1)字段更改为TINYINT(1)字段?