MySQL选择varchar长度所在的位置

MySQL选择varchar长度所在的位置,mysql,select,varchar,Mysql,Select,Varchar,我正在尝试选择字段长度=X的所有字段 目标是查看字段是否有15个字符(VARCHAR)并设置type=Y 当我测试选择时返回0行,这是不正确的 select * from payment_options where char_length(cc_type) = 15 我试过长度、字符长度等,但都不起作用 谁能给我指一下正确的方向吗 多谢各位 编辑:澄清 我得到它=(我指定了错误的字段 我想做的是,如果char_length(cc_masked)=15,则将cc_type设置为美国运通 您所拥有

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

目标是查看字段是否有15个字符(VARCHAR)并设置type=Y

当我测试
选择时
返回0行,这是不正确的

select *
from payment_options
where char_length(cc_type) = 15
我试过长度、字符长度等,但都不起作用

谁能给我指一下正确的方向吗

多谢各位

编辑:澄清

我得到它=(我指定了错误的字段

我想做的是,如果char_length(cc_masked)=15,则将cc_type设置为美国运通


您所拥有的应该是有效的。也许您需要详细说明“什么都不起作用”:空结果集?sql错误?什么?您还应该指定您的模式和示例数据

不管怎样,我继续创建了一个sql fiddle,展示了类似的东西是如何工作的:

模式和样本数据

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');
您现有的查询

SELECT *
FROM `payment_options`
WHERE CHAR_LENGTH(`cc_type`) = 15;
提供以下结果集:

|--------------------------------------|
|  ID  |  CC_TYPE          |  CC_NAME  |
|  1   |  fifteen chars01  |  alpha    |
|  2   |  fifteen chars02  |  bravo    |
|  4   |  fifteen chars03  |  delta    |
|--------------------------------------|
如果要在查询本身中运行X/Y逻辑,可以使用
If
(,):

收益率:

|---------------------------------------------------------------|
|  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                 |
|---------------------------------------------------------------|

char\u length
应该有效。请尝试运行
SELECT char\u length(cc\u类型)从payment_options;
查看它可能返回的值。请提供一些示例数据和所需结果。这将有助于明确目标。谢谢。我确实解决了我的问题,但您的详细回答值得标记为答案。
SELECT  *,
    IF(CHAR_LENGTH(`cc_type`)=15,'Y','X') as `cc_type_modified`
FROM `payment_options`;
|---------------------------------------------------------------|
|  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                 |
|---------------------------------------------------------------|