2

私はmysql関数で次のことを行う方法を見つけようとしていました:

'ssssssttttttttrrrriiiinnnngggg' // I have this string

私は10文字だけを取り、「...」(3ドット)を連結したいのですが、10文字を超える文字列にのみ連結したいので、例えば:

'123456string' // Will result: '123456stri...'
'strin6' // Will result: 'strin6'
'str123456ing' // Will result: 'str123456i...'
'asd23456' // Will result: 'asd23456'

substr、lpad、および concat の組み合わせを試していました。正しい関数の組み合わせを見つけた人がいたら、とても感謝しています。ありがとうございました。よい一日を。

4

3 に答える 3

8
  select case when length(mystring) <= 10 then 
      mystring 
  else 
      concat(left(mystring, 7), '...') 
  end as mycol
  ...
于 2013-05-15T12:11:09.527 に答える
2

追加の IF を使用して、最初に値の長さを確認します。

SELECT IF(LENGTH(str) > 10, CONCAT(SUBSTR(str, 1, 10), "..."), str) AS ...

于 2013-05-15T12:13:37.113 に答える
2

if(length(string1)>10,concat(substr(string1,1,10),"..."),string1) を mystring として選択

于 2013-05-15T12:16:43.907 に答える