相关疑难解决方法(0)

为什么CONCAT()不默认为MySQL中的默认字符集?

是什么原因,在纯UTF-8环境中使用CONCAT()MySQL仍然将连接字符串(当表达式中的某些col为例如int或date)视为其他字符集(可能是Latin-1)?

从client(\s)看到的MySQL环境:

Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
Run Code Online (Sandbox Code Playgroud)

测试数据集:

CREATE TABLE `utf8_test` ( 
    `id` int(10) unsigned NOT NULL auto_increment, 
    `title` varchar(50) collate utf8_estonian_ci default NULL,
    `year` smallint(4) unsigned NOT NULL default '0', 
    PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci;

INSERT INTO utf8_test VALUES (1, 'Õäöüšž', 2011);
Run Code Online (Sandbox Code Playgroud)

这个查询很好:

SELECT id, title FROM utf8_test;
Run Code Online (Sandbox Code Playgroud)

这个关闭utf-8标志(已经在MySQL,AFIU):

SELECT CONCAT(id, title) FROM utf8_test;
Run Code Online (Sandbox Code Playgroud)

从mysql-client看来一切都很好,因为它设置为将字符显示为UTF-8,但是当通过perl DBI运行时,所有内部有CONCAT()的查询结果都没有设置utf-8标志.示例代码:

#!/usr/bin/perl

use strict;
use utf8::all;
use Encode qw(is_utf8);

my $dbh = …
Run Code Online (Sandbox Code Playgroud)

mysql perl utf-8

13
推荐指数
1
解决办法
6743
查看次数

在MYSQL中使用带有多个字段和空格的通配符

我在两个领域寻找任何类似的比赛时遇到了一些麻烦.例如,我有一个包含值的表:

CAR MAKE   CAR MODEL
Ford       Mustang (Shelby)
Toyota     Corolla
Seat       Leon

etc etc.
Run Code Online (Sandbox Code Playgroud)

我想通过搜索以下任何组合来获得结果"Ford,Mustang(Shelby)":

  • 野马
  • 谢尔比
  • 福特野马

    或任何其他组合.

这可能吗?我有一个很好的搜索,但很难找到搜索术语来描述我的意思.

mysql sql search sql-like

6
推荐指数
1
解决办法
3万
查看次数

将值与where子句中的连接字段进行比较

说我想搜索一个用户'Richard Best'.是否可以比较全名是串联的名字和姓氏?我没有全名字段.

select * from users where last_name + ' ' + first_name like '%richa%'
Run Code Online (Sandbox Code Playgroud)

我正在使用Mysql

mysql sql

4
推荐指数
2
解决办法
7446
查看次数

标签 统计

mysql ×3

sql ×2

perl ×1

search ×1

sql-like ×1

utf-8 ×1