mysql喜欢字母的查询和排序位置

mysql like query and sortby position of the letter

我的查询类似于下面给出的 link 中的问题。

https://dba.stackexchange.com/questions/60137/mysql-is-it-possible-to-order-a-query-by-a-specific-letter-using-order-by?newreg=c7d05bbfb2db401082ff650715882016

问题是,查询 returns 所有行而不管搜索词。不仅我得到以 D 开头的 pname,而且即使是所有没有 D 的 pname,唯一的成功是结果的行首字母为 'D' 位于结果的顶部。我怎样才能避免这种情况?

如果您想列出搜索字段以 D 开头的所有行,您只需添加

..
WHERE my_field LIKE 'D%'

你试过这样的事情吗(根据你提到的post):

    SELECT 
        pname, pdescription, price
    FROM
        products
    WHERE pname LIKE '%D%'
    ORDER BY 
    CASE
        WHEN pname LIKE 'D%' THEN 1
        ELSE 2
    END;

注意WHERE子句