PHP选择从MySQL中以A开头(仅限A)的标题。

29

我相信这很简单,但似乎想不出来... 我需要从我的数据库中选择所有以A、B、C等字母开头的标题。下面是我迄今为止尝试过的内容:

SELECT * FROM weblinks WHERE catid = 4 AND title LIKE 'A'

但是没有返回任何东西... 有人能帮我解决这个问题吗?

谢谢!


我还忘了问如果标题以数字开头该怎么做。 - SoulieBaby
如何使用PDO实现这个? - William Entriken
5个回答

63

对于以字母'A'开头的标题,在'A'后面加上%

SELECT * FROM weblinks WHERE catid = 4 AND title LIKE 'A%'

对于标题中包含字母'A'的情况,使用在A两侧加上%

SELECT * FROM weblinks WHERE catid = 4 AND title LIKE '%A%'

对于以字母“ A”结尾的标题,在“ A”之前使用%

SELECT * FROM weblinks WHERE catid = 4 AND title LIKE '%A'

基本上,% 是通配符。它告诉MySQL该位置可以包含任何内容。

如果想要以数字作为第一个字母,请查看马克的答案。


我认为第二个例子应该以'%A%'结尾。 - catsby
非常感谢,我还忘了问一下如果标题以数字开头怎么办? - SoulieBaby
1
用数字(如1%)替换字母“A”。 - Tyler Carter
可以使用数字通配符来实现,例如它可以是任何数字吗? - SoulieBaby
然后你开始涉及到MySQL正则表达式。你可能需要单独提出一个问题来询问。 - Tyler Carter

7
现有的答案对于以A开头的单词是正确的:
SELECT * FROM weblinks WHERE catid = 4 AND title LIKE 'A%'

要从任何数字开始,您可以使用REGEXP运算符:

SELECT * FROM weblinks WHERE catid = 4 AND title REGEXP '^[0-9]'

1
来抢我的被接受的答案了吗?(开玩笑的)我添加了一个链接到你的答案。 - Tyler Carter
3
@Soulie:你应该接受Chacha的回答,因为在他已经正确回答问题之后,你改变了问题。下次如果你对一个问题进行了实质性的更改,请开一个新问题而不是更改现有的问题。 - Mark Byers

7

LIKE 的通配符是 %_,其中 % 匹配 0 或多个字符,_ 匹配一个字符。


2

尝试:

SELECT * FROM weblinks WHERE catid = 4 AND ((title like 'A%') OR (title like 'B%'))

等等类似的事情。

1

SELECT * FROM weblinks WHERE catid = 4 AND title LIKE 'A%'

%表示“任何东西”,所以它是“A”然后是任何东西。仅适用于LIKE比较运算符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接