首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL -如何进行字符串比较和查询?

MYSQL -如何进行字符串比较和查询?
EN

Stack Overflow用户
提问于 2011-02-23 18:44:46
回答 2查看 73关注 0票数 0
代码语言:javascript
复制
+--------------------+---------------+------+-----+---------+-------+
| ID                 | GKEY          |GOODS | PRI | COUNTRY | Extra |
+--------------------+---------------+------+-----+---------+-------+
| 1                  | BOOK-1        | 1    | 10  |         |       |
| 2                  | PHONE-1       | 2    | 12  |         |       |
| 3                  | BOOK-2        | 1    | 13  |         |       |
| 4                  | BOOK-3        | 1    | 10  |         |       |
| 5                  | PHONE-2       | 2    | 10  |         |       |
| 6                  | PHONE-3       | 2    | 20  |         |       |
| 7                  | BOOK-10       | 2    | 20  |         |       |
| 8                  | BOOK-11       | 2    | 20  |         |       |
| 9                  | BOOK-20       | 2    | 20  |         |       |
| 10                 | BOOK-21       | 2    | 20  |         |       |
| 11                 | PHONE-30      | 2    | 20  |         |       |
+--------------------+---------------+------+-----+---------+-------+ 

上面是我的桌子。我想得到GKEY > BOOK-2的所有记录,谁能告诉我mysql的表达式?

使用“WHERE GKEY>'BOOK-2‘”无法获得正确的结果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-23 18:49:41

这样怎么样(类似于):

(这是MSSQL --我猜它在MySQL中也是类似的)

代码语言:javascript
复制
select 
   *
from
   (
      select 
         *,
         index = convert(int,replace(GKEY,'BOOK-',''))
      from table
      where 
         GKEY like 'BOOK%'
   ) sub
where
   sub.index > 2

作为解释:内部查询基本上重新创建了您的表,但仅针对图书行,并且具有包含正确数据类型的索引的额外列,以进行大于数值的比较工作。

另一种方法是这样:

代码语言:javascript
复制
select
   *
from table
where
   (
     case
        when GKEY like 'BOOK%' then
           case when convert(int,replace(GKEY,'BOOK-','')) > 2 then 1
           else 0
           end
        else 0
        end
   ) = 1

本质上,问题是您需要在将索引转换为数字之前检查BOOK,因为GKEY的其他值将创建一个错误(不进行一些笨重的字符串处理)。

票数 1
EN

Stack Overflow用户

发布于 2011-02-23 18:47:56

代码语言:javascript
复制
SELECT * FROM `table` AS `t1` WHERE `t1`.`id` > (SELECT `id` FROM `table` AS `t2` WHERE `t2`.`GKEY`='BOOK-2' LIMIT 1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5089815

复制
相关文章

相似问题

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