SQL Server'da büyük dizem var. Bu dizeyi 10 veya 15 karakter olacak şekilde kesmek istiyorum
Orijinal dize
this is test string. this is test string. this is test string. this is test string.
İstenilen dize
this is test string. this is ......
SQL Server'da büyük dizem var. Bu dizeyi 10 veya 15 karakter olacak şekilde kesmek istiyorum
Orijinal dize
this is test string. this is test string. this is test string. this is test string.
İstenilen dize
this is test string. this is ......
Yanıtlar:
Uzun dizenizin yalnızca birkaç karakterini döndürmek istiyorsanız, şunları kullanabilirsiniz:
select
left(col, 15) + '...' col
from yourtable
Demo ile SQL Fiddle'a bakın .
Bu, dizenin ilk 15 karakterini döndürür ve ardından ...
sonuna kadar birleştirir .
15'ten küçük dizelerin almadığından emin olmak istiyorsanız, ...
o zaman kullanabilirsiniz:
select
case
when len(col)>=15
then left(col, 15) + '...'
else col end col
from yourtable
Demo ile SQL Fiddle'ı görün
...
geçerli olmadığında da eklenecek
Kullanabilirsiniz
LEFT(column, length)
veya
SUBSTRING(column, start index, length)
Buradaki cevapların harika olduğunu düşünüyorum, ancak bir senaryo eklemek istiyorum.
Birkaç kez, uzunluğu hakkında endişelenmeden bir dizenin önünden belirli miktarda karakter almak istedim. Bunu RIGHT () ve SUBSTRING () ile yapmanın birkaç yolu vardır, ancak hepsinin dizenin uzunluğunu bilmesi gerekir, bu da bazen işleri yavaşlatabilir.
Bunun yerine STUFF () işlevini kullanıyorum:
SET @Result = STUFF(@Result, 1, @LengthToRemove, '')
Bu, gereksiz dizenin uzunluğunu boş bir dizeyle değiştirir.
Cast () işlemini de kullanabilirsiniz:
Declare @name varchar(100);
set @name='....';
Select Cast(@name as varchar(10)) as new_name
Aşağıdakini de kullanabilirsiniz, iif case ifadesini önler ve yalnızca gerektiğinde elips ekler (yalnızca SQL Server 2012 ve sonrasında iyidir) ve case ifadesi daha ANSI uyumludur (ancak daha ayrıntılı)
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