Pertanyaan Cara memotong string menggunakan server SQL


saya memiliki string besar di SQL Server. Saya ingin memotong string itu menjadi 10 atau 15 karakter

String asli

this is test string. this is test string. this is test string. this is test string.

String yang diinginkan

this is test string. this is ......

75
2018-02-28 17:56


asal


Jawaban:


Jika Anda hanya ingin mengembalikan beberapa karakter string panjang Anda, Anda dapat menggunakan:

select 
  left(col, 15) + '...' col
from yourtable

Lihat SQL Fiddle dengan Demo.

Ini akan mengembalikan 15 karakter pertama dari string dan kemudian menggabungkan ... sampai akhir.

Jika Anda ingin memastikan daripada string kurang dari 15 tidak mendapatkan ... maka Anda bisa menggunakan:

select 
  case 
    when len(col)>=15
    then left(col, 15) + '...' 
    else col end col
from yourtable

Lihat SQL Fiddle dengan Demo


116
2018-02-28 17:58



Kamu dapat memakai

LEFT(column, length)

atau

SUBSTRING(column, start index, length)

15
2018-02-28 18:24



Saya pikir jawabannya bagus, tetapi saya ingin menambahkan skenario.

Beberapa kali saya ingin mengambil sejumlah karakter dari bagian depan string, tanpa mengkhawatirkan panjangnya. Ada beberapa cara melakukan ini dengan KANAN () dan SUBSTRING (), tetapi mereka semua perlu mengetahui panjang string yang kadang-kadang dapat memperlambat segalanya.

Saya telah menggunakan fungsi STUFF () sebagai gantinya:

SET @Result = STUFF(@Result, 1, @LengthToRemove, '')

Ini menggantikan panjang string yang tidak dibutuhkan dengan string kosong.


4
2018-02-24 23:38



Anda juga dapat menggunakan operasi Cast ():

 Declare @name varchar(100);
set @name='....';
Select Cast(@name as varchar(10)) as new_name

3
2018-03-25 09:14



Anda juga dapat menggunakan di bawah ini, iif menghindari pernyataan kasus dan hanya menambahkan elips bila diperlukan (hanya baik dalam SQL Server 2012 dan yang lebih baru) dan pernyataan kasus lebih ANSI compliant (tetapi lebih verbose)

SELECT 
  col, LEN(col), 
  col2, LEN(col2), 
  col3, LEN(col3) FROM (
  SELECT 
    col, 
    LEFT(x.col, 15) + (IIF(len(x.col) > 15, '...', '')) AS col2, 
    LEFT(x.col, 15) + (CASE WHEN len(x.col) > 15 THEN '...' ELSE '' END) AS col3 
  from (
      select 'this is a long string. One that is longer than 15 characters' as col
      UNION 
      SELECT 'short string' AS col
      UNION 
      SELECT 'string==15 char' AS col
      UNION 
      SELECT NULL AS col
      UNION 
      SELECT '' AS col
) x
) y

1
2018-05-31 21:11



     CASE
     WHEN col IS NULL
        THEN ''
     ELSE SUBSTRING(col,1,15)+ '...' 
     END AS Col

0
2017-07-03 13:19