メモと言う列があり、メモ内の値は次のようになります。
薬。これは正しい処方で使用する必要があります。wwww.test.comURL:www.test.com/medicine/test.php
これらの結果を3つの部分で抽出または取得したいと思います。
しかし、MySQLのselectステートメントを使用してそれを行うにはどうすればよいですか?どんな助けでも大歓迎です!
簡単な答えは次のとおりです。簡単ではありません。あなたはあなたのためにこれをする関数を書くことができます。
次の解決策を読む必要があります。値を1つのフィールドから2つに分割する
上記の答えから取られた:
その機能で:
DELIMITER $$
CREATE FUNCTION SPLIT_STR(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS VARCHAR(255) DETERMINISTIC
BEGIN
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');
END$$
DELIMITER ;
次のようにクエリを作成できます。
SELECT SPLIT_STR(membername, ' ', 1) as memberfirst,
SPLIT_STR(membername, ' ', 2) as memberlast
FROM users;
質問を改善すれば、これを実装する方法についてより具体的な回答を提供できますが、この列の構造や行ごとにどのように変化するかについてはほとんど情報が提供されていません。
編集:
この関数の使用法のビット:それは3つのパラメーターを取ります。
分割する文字列。
区切り文字。つまり、文字列を分割する1つ以上の文字です。
インデックス。これを使用して、分割された文字列のどの部分が必要かを選択します。
たとえば、列が次のようにフォーマットされている場合:
SELECT summary
FROM MyTable
結果:
summary
----------------------------
"foo. bar. www.foobar.com"
あなたは次のようなものを置くことができます:
SELECT SPLIT_STR(summary, '. ', 1) AS a_summary,
SPLIT_STR(summary, '. ', 2) AS a_description,
SPLIT_STR(summary, '. ', 3) AS a_url,
FROM MyTable
出力は次のようになります。
a_summary | a_description | a_url
------------------------------------------
foo | bar | www.foobar.com
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加