首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL castr运算符

问MySQL castr运算符
EN

Stack Overflow用户
提问于 2013-09-23 19:37:49
回答 3查看 69关注 0票数 2

下面的查询有没有更短的等价物:(我不能修改这个表)。cast运算符在这里适用吗?

代码语言:javascript
复制
select convert(old_text using utf8) as text,
   convert(rev_timestamp using utf8) as ts,
   convert(rev_user_text using utf8) as user from revision;

更新:表模式是:

代码语言:javascript
复制
CREATE TABLE `revision` (
    `rev_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `rev_page` INT(10) UNSIGNED NOT NULL,
    `rev_text_id` INT(10) UNSIGNED NOT NULL,
    `rev_comment` TINYBLOB NOT NULL,
    `rev_user` INT(10) UNSIGNED NOT NULL DEFAULT '0',
    `rev_user_text` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'latin1_bin',
    `rev_timestamp` BINARY(14) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0',
`old_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`old_text` MEDIUMBLOB NOT NULL,
`old_flags` TINYBLOB NOT NULL,
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
EN

回答 3

Stack Overflow用户

发布于 2013-09-23 19:58:32

最好的做法是修改表并为所需的列设置utf8,而不是每次都转换它们

代码语言:javascript
复制
    ALTER TABLE t MODIFY old_text CHAR(50) CHARACTER SET utf8;
    ALTER TABLE t MODIFY rev_timestamp CHAR(50) CHARACTER SET utf8;
    ALTER TABLE t MODIFY rev_user_text CHAR(50) CHARACTER SET utf8;

然后选择法线。

代码语言:javascript
复制
select old_text  as text, rev_timestamp  as ts, rev_user_text as user 
from revision;

注意:关于char(50)的可以根据需要进行更改。

票数 0
EN

Stack Overflow用户

发布于 2013-09-23 19:59:08

代码语言:javascript
复制
set names utf8;

SELECT old_text AS text, rev_timestamp AS ts, rev_user_text AS user
FROM revisions;

...but如果你用不同的字符集发送DML,这将会中断。

票数 0
EN

Stack Overflow用户

发布于 2013-09-23 20:00:44

最简单的修改方法,就是用mysql字符集key修改my.ini文件,

代码语言:javascript
复制
default-character-set = utf8 
character_set_server = utf8

修改后,重启mysql服务,重启服务mysql

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

https://stackoverflow.com/questions/18958280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档