1

SQL クエリで %/wildcard を置き換える文字を確認する方法はありますか?

言う

        $exhibitions = $wpdb->get_results( "SELECT * FROM wp_postmeta
            WHERE meta_key LIKE  'dates_%_startdate'
            ORDER BY meta_value
            LIMIT 0 , 30" );

結果の meta_key-column が「dates_0_startdate」だった場合、どうにかしてゼロだけを取得したいと思います。

4

4 に答える 4

2
SELECT *, replace(replace(meta_key, 'dates_', ''), '_startdate', '')
FROM wp_postmeta
WHERE meta_key LIKE  'dates_%_startdate'
ORDER BY meta_value
LIMIT 0 , 30

SQLFiddle デモ

于 2013-11-05T08:25:22.977 に答える
1

MSSQL では、アンダースコアは 1 文字のワイルドカードです。

http://technet.microsoft.com/en-us/library/ms179859.aspx

また、MySQL のようです: http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html

于 2013-11-05T08:25:36.197 に答える
1
SELECT REPLACE(REPLACE(meta_key,'dates_',''),'_startdate','') 
FROM wp_postmeta
WHERE meta_key LIKE  'dates_%_startdate'
ORDER BY meta_value
LIMIT 0 , 30
于 2013-11-05T08:27:47.520 に答える
0

使用している SQL の形式によって異なります。MSSQL を使用している場合 (get_results の見た目ではそうではありません)、SUBSTRING を使用して、SUBSTRING ( expression ,start , length ) のように機能する情報を返すことができます。

get_results( "SELECT SUBSTRING(meta_key, 7, 1) FROM wp_postmeta
        WHERE meta_key LIKE  'dates_%_startdate'
        ORDER BY meta_value
        LIMIT 0 , 30" );
于 2013-11-05T08:29:40.170 に答える