MySQL选择varchar长度所在的位置
我正在尝试选择字段长度=X的所有字段 目标是查看字段是否有15个字符(VARCHAR)并设置type=Y 当我测试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设置为美国运通 您所拥有
选择时
返回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 |
|---------------------------------------------------------------|