MySQL选择varchar的长度

Bar*_*orx 8 mysql select varchar

我正在尝试选择字段长度= X的所有字段

目标是查看字段是否包含15个字符(VARCHAR)和set type = Y.

当我测试select我回来0行,这是不正确的.

select *
from payment_options
where char_length(cc_type) = 15
Run Code Online (Sandbox Code Playgroud)

我尝试了长度,char_length等,但没有任何作用.

有人能指导我正确的方向吗?

谢谢.

编辑:澄清.

我明白了=(我指的是错误的字段.

如果char_length(cc_masked)= 15,我想要做的是将cc_type设置为Amex

UPDATE payment_options
SET cc_type = "Amex"
WHERE char_length(cc_masked) = 15;
Run Code Online (Sandbox Code Playgroud)

zam*_*uts 10

你有什么应该工作.也许你需要详细说明"无效":空结果集?sql错误?什么?您还应该指定架构和示例数据.

无论如何,我继续创建了一个sql fiddle show,这样的东西可能会起作用:http://sqlfiddle.com/#!2/7242e/8

架构和示例数据

CREATE TABLE `payment_options` (
    `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    `cc_type` VARCHAR(255),
    `cc_name` VARCHAR(255)
);

INSERT INTO `payment_options` (`cc_type`,`cc_name`) VALUES
    ('fifteen chars01','alpha'),
    ('fifteen chars02','bravo'),
    ('not fifteen chars','charlie'),
    ('fifteen chars03','delta'),
    ('really not 15 chars','echo');
Run Code Online (Sandbox Code Playgroud)

您现有的查询

SELECT *
FROM `payment_options`
WHERE CHAR_LENGTH(`cc_type`) = 15;
Run Code Online (Sandbox Code Playgroud)

提供以下结果集:

|--------------------------------------|
|  ID  |  CC_TYPE          |  CC_NAME  |
|  1   |  fifteen chars01  |  alpha    |
|  2   |  fifteen chars02  |  bravo    |
|  4   |  fifteen chars03  |  delta    |
|--------------------------------------|
Run Code Online (Sandbox Code Playgroud)

如果你想在查询本身内运行X/Y逻辑,你可以使用IF(IF()docs,相关的SO答案):

SELECT  *,
    IF(CHAR_LENGTH(`cc_type`)=15,'Y','X') as `cc_type_modified`
FROM `payment_options`;
Run Code Online (Sandbox Code Playgroud)

产量:

|---------------------------------------------------------------|
|  ID  |  CC_TYPE              |  CC_NAME  |  CC_TYPE_MODIFIED  |
|  1   |  fifteen chars01      |  alpha    |  Y                 |
|  2   |  fifteen chars02      |  bravo    |  Y                 |
|  3   |  not fifteen chars    |  charlie  |  X                 |
|  4   |  fifteen chars03      |  delta    |  Y                 |
|  5   |  really not 15 chars  |  echo     |  X                 |
|---------------------------------------------------------------|
Run Code Online (Sandbox Code Playgroud)