2017-07-10 11 views
-3

私はこのPHPコードを持っている:あなたが知っているようにスペースに基づいて文字列を切り取るにはどうすればよいですか?

if ((strlen($str) > 120)){ 
     $str = substr($str, 0, strpos($str, ' ', 110)).' ...'; 
} 

を、私のコードはスペースに基づいて文字列をカットします。途中で言葉を切ってしまうことは決してありません。

とにかく、私は知りたいのですが、MySQLで同じことをすることはできますか?いくつかの研究に基づいて


、私は、そのような仕事のためのMySQLの機能があります考え出し、このような何か:

SELECT SUBSTR(col, 0, 110), other_cols 

しかし、あなたが知っているように、それは宇宙とかもしれない気をdoes't仕事を壊す

+0

をあなたが望むことをやりなさい。 –

+0

@JayBlanchard合意した、RegExは素晴らしいオプションになります。ちょうど 'LOCATE()'関数を使って以下の答えについてあなたの意見は? – stack

+1

私はそれが好きで、賢いです。 –

答えて

1

あなたはこのようなものからスタートし、ニーズのためにそれを適応させることができます:

SELECT CASE WHEN LOCATE(' ' , YOURSTR, 120) > 0 
     THEN SUBSTR(YOURSTR, 1, LOCATE(' ' , YOURSTR, 120)) 
     ELSE YOURSTR END AS YOURSTR 
FROM YOUR TABLE; 

このしようと、あなたが以下のコメントで尋ねに答えるために:あなたは、MySQLで正規表現を使用することができます

SELECT CASE WHEN LOCATE(' ' , 'abcd efg', 5) > 0 THEN SUBSTR('abcd efg', 1, LOCATE(' ' , 'abcd efg', 5)) ELSE 'abcd efg' END AS STR; 
//=> 'abcd' 

SELECT SUBSTR('abcdefg', 1, LOCATE(' ' , 'abcdefg', 5)) AS STR; 
//=> '' 

SELECT SUBSTR('abcd efg', 1, LOCATE(' ' , 'abcd efg', 50)) AS STR; 
//=> '' 
+0

賢い..ありがとう、upvote。ちょうど私は理解していない、その理由は何ですか?私はこの 'SUBSTR(YOURSTR、1、LOCATE( ''、YOURSTR、120))で十分だと思いますか? – stack

+0

':-)'おかげさまで編集していただきましたが、これらの3つのクエリではどういう意味ですか? – stack

+0

それらを試してみてください。結果は – etsa

関連する問題