使用通配符选择以特定字符开头的名称不起作用

时间:2019-03-27 02:58:31

标签: mysql sql

我正在尝试使用通配符

使用通配符在first_name列中选择所有以'b','s'或'p'开头的名称
SELECT first_name
from actor
where first_name like '[bsp]%';

4 个答案:

答案 0 :(得分:2)

您尚未指定要使用的MySQL版本,这将更改对正则表达式的支持级别。向后兼容的版本(回到MySQL〜v5.x)使用​​:

  1. 正则表达式模式.*代替MySQL %通配符

  2. The regexp token声明该条件应解释为正则表达式

SELECT first_name from actor where first_name regexp '[bsp].*?';

SQLFiddle

答案 1 :(得分:0)

我认为应该是:

points = [0.368,0.02,2.3 ; -0.536,-0.108,2.3];
d = 40;

syms x1 y1 z1 x2 y2 z2 real


% assumeAlso(z1 >= 0)
% assumeAlso(z2 >= 0)


% Conditions L1 must satisfy
line1 = [
    x1/points(1,1) == y1/points(1,2)
    y1/points(1,2) == z1/points(1,3)
];

% Conditions L2 must satisfy
line2 = [
    x2/points(2,1) == y2/points(2,2)
    y2/points(2,2) == z2/points(2,3)
];


distance = [
    ( (x1-x2).^2 + (y1-y2).^2 + (z1-z2).^2 ) == d.^2
];

solved = solve([line1,line2,distance],[x1,y1,z1,x2,y2,z2]);


disp([ 
eval([solved.x1 solved.y1 solved.z1])
eval([solved.x2 solved.y2 solved.z2])
])

答案 2 :(得分:0)

这项工作也是如此:

SELECT first_name FROM actor WHERE first_name REGEXP '^b|^s|^p';

在MySQL 4.1和MariaDB 10.3.10上测试

答案 3 :(得分:0)

最简单的方法是正则表达式:

where first_name regexp '^[bsp]';

like模式不同,正则表达式不需要匹配整个表达式。如果模式在任何地方都匹配,则regexp返回true。因此,不需要等效的%(在正则表达式中为.*)。

您还可以使用:

where left(first_name, 1) in ('b', 's', 'p')