今日フォーラムでmysqlに関する質問を見ました
good_id cat_id
12654 601,4722
goods_idは商品IDです
cat_idはカテゴリIDです
、この分類IDに基づいてデータを確認する方法は次のとおりです。 ? (商品には複数のカテゴリがあり、カンマで区切られています)
この場合、カテゴリ ID 688 または 4722 を入力すると商品が表示されますが、カテゴリ ID 722 を入力すると、商品も登場します。
like を使用すると、間違いなく問題が発生します。私の最初のアイデアは、mysql の in 操作を使用できるように、cat_id の文字列を配列に置き換えて、検索 722 が表示されないようにすることです。 4722 カテゴリーのものが利用可能です。インターネットで長い間検索しましたが、この分野の文字列操作関数は見つかりませんでした。しかし、find_in_set関数は文字列を配列に変換できませんが、上記の状況は発生しないことがわかりました。知らない機能がたくさんあることがわかったので、長い間マニュアルやインターネットからいくつかの例を集めました。
CHAR_LENGTH(str) str
LENGTH(str) のバイト長を返します str
CONCAT(str1,str2....) パラメータ str1,str2..を返します。 .. スプライシングの場合、null 値がある場合は null が返されます
CONCAT_WS(x,str1,str2...) ---セパレータ付き連結 最初のパラメータ x はセパレータを表し、次のパラメータはセパレータを表しますare strings
If x が NULL の場合、文字列に NULL が含まれている場合は無視されます
INSERT(s1,x,len,s2) 文字列置換 s1 対象文字列 x は開始位置ですs1 の (添字は 1 から始まります) len は x の後の長さ、s2 は置換する必要がある文字列です
x が s1 の添字の長さを超える場合、len が の後の残りの文字列長より大きい場合、s1 を返します。 LCASE(str) 文字列を小文字に変換します
UPPER(str), UCASE(str) 文字列を大文字に変換します
LEFT(str,n) 文字列 str の左端の n 文字を返します
RIGHT(str,n) 文字列 str の右端の n 文字を返します。
LPAD(s1,len,s2) len
RPAD(s1,len,s2) は、len< の場合、s1 の右から len の長さまでパディングされた s2 を返します; s1 の長さ、その後 s2 は埋められず、s1 の左から len 長さの文字を返します
LTRIM(S) は左側のスペースを削除します RTRIM(s) は右側のスペースを削除します TRIM( s) 両側のスペースを削除
TRIM(s1 FROM s2) s2の両端にあるs1の文字列を削除
REPEAT(s,n) n s, n<=から構成される文字列を返す0、空を返します。s または n は NULL です。NULL を返します
SPACE(n) n 個のスペース文字列を返します
REPLACE(s,s1,s2) 戻り値 - すべての s1 文字列を置き換えた結果s by s2
STRCPM(s1,s2) s1==s2 は 0 を返します s1
s2 は 1 を返します
SUBSTRING(s,n,len), MID(s,n) ,len) は、n から始まる s を返します。n
LOCATE(str1, str2), POSITION(str1 IN str2), INSTR(str2, str1) str2 内の str1 の開始位置を返します
REVERSE(s) s の文字列を返します Reverse
ELT(n,str1,str2,str3...) str1,str2..のn番目の文字列を返します。nがそれを超えた場合はnullを返します
FIELD(s,str1,str2,str3.. ..) str1、str2.... で最初に出現する s の位置を返します。0 は返されません FIND_IN_SET(s, str1) str1 の位置での s の出現を返します。ここで、str1 は複数の値で構成されます。文字列、カンマ区切りのリスト
以上がMySQLの文字列関数の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。