我有一个具有以下值的表:
123, 159, 147, 258, 369
我需要找到同时包含1和2但不包含3的数据。结果应该是:
159, 147 and 258.
我尝试了通配符%-[],但没有运气。
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$sql = "SELECT * FROM numbers WHERE track LIKE '%[12]%' AND track NOT LIKE '%[3]%'";
$q = $conn->prepare($sql);
$q->execute(array($title));
答案 0 :(得分:1)
您使用的语法在SQL Server中有效,但不适用于MySQL。您可以使用REGEXP:
WHERE track REGEXP '[12]'
AND track NOT LIKE '%3%'
或仅使用LIKE
:
WHERE (track LIKE '%1%' OR track LIKE '%2%')
AND track NOT LIKE '%3%'
答案 1 :(得分:0)
不确定这是否是您的意图,但是如果您尝试仅从3位数字的池中选择以1或2开头的记录,则可以使用。
SELECT * FROM numbers WHERE track LIKE '%1[0-9][0-9]' OR track LIKE '%2[0-9][0-9]'