【问题标题】:MySQL using like to match specific stringMySQL 使用 like 匹配特定字符串
【发布时间】:2018-06-08 08:24:49
【问题描述】:

在我的专栏中,我可以使用如下字符串:“data+”或“data+data+data+..(未定义时间)..+” 我只需要获取我有多个数据的列,而不仅仅是一个。

我试过了

mycol NOT LIKE '%+'

但它没有工作......

其实我不知道数据是一个变化的字符串:'blabla' or 'aString' or 'whatever'

如果我在我的专栏中有

'jdsjpgsg+jdsjpgsg+', 'dvgff+', 'ffef+eefds+ghghgh+'

我只想选择

'jdsjpgsg+jdsjpgsg+',
'ffef+eefds+ghghgh+', 

不是'dvgff+'

【问题讨论】:

  • 试试mycol NOT LIKE 'data+%'

标签: mysql string sql-like


【解决方案1】:

如果你想搜索 '..xxx+..' 那么你应该使用xxx+%

如果你想搜索 '..+xxx..' 那么你应该使用%+xxx

如果你想搜索 '..++..' 那么你应该使用%++%

如果你想搜索 '..+..+..' 那么你应该使用%+%+%


这也是我得到的,我不想那样。这实际上是我不想选择的。如果我的表中有 jdsjpgsg+jdsjpgsg+ 我想选择它而不是 jdsjpgsg+ 这很棘手...

所以你可以尝试like '%+%+%' 排除一个“+”

CREATE TABLE TestTable
    (`text` varchar(90))
;

INSERT INTO TestTable
    (`text`)
VALUES
    ('jdsjpgsg+jdsjpgsg+'),
    ('dvgff+'),
    ('ffef+eefds+ghghgh+')
;

select * from TestTable
where text like '%+%+%'

|               text |
|--------------------|
| jdsjpgsg+jdsjpgsg+ |
| ffef+eefds+ghghgh+ |

SQL Fiddle Demo Link

【讨论】:

  • 这也是我得到的,我不想那样。这实际上是我不想选择的。如果我的表中有 jdsjpgsg+jdsjpgsg+ 我想选择它而不是 jdsjpgsg+ 这很棘手....
【解决方案2】:

% 是通配符。您应该在data 之后使用%。试试看:

SELECT * FROM `table` WHERE `mycol` NOT LIKE 'data+%'

上面的查询会过滤掉所有在data+之后有任何字符的记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    相关资源
    最近更新 更多