у меня большая строка в SQL Server. Я хочу обрезать эту строку до 10 или 15 символов
Исходная строка
this is test string. this is test string. this is test string. this is test string.
Желаемая строка
this is test string. this is ......
у меня большая строка в SQL Server. Я хочу обрезать эту строку до 10 или 15 символов
Исходная строка
this is test string. this is test string. this is test string. this is test string.
Желаемая строка
this is test string. this is ......
Ответы:
Если вы хотите вернуть только несколько символов из своей длинной строки, вы можете использовать:
select
left(col, 15) + '...' col
from yourtable
Смотрите SQL Fiddle с демонстрацией .
Это вернет первые 15 символов строки, а затем объединит их ...
до конца.
Если вы хотите убедиться, что строки меньше 15 не получают, ...
вы можете использовать:
select
case
when len(col)>=15
then left(col, 15) + '...'
else col end col
from yourtable
...
добавленный, когда он не применяется
Ты можешь использовать
LEFT(column, length)
или
SUBSTRING(column, start index, length)
Думаю, ответы здесь отличные, но я хотел бы добавить сценарий.
Несколько раз я хотел убрать определенное количество символов с начала строки, не беспокоясь о ее длине. Есть несколько способов сделать это с помощью RIGHT () и SUBSTRING (), но все они должны знать длину строки, что иногда может замедлить работу.
Вместо этого я использовал функцию STUFF ():
SET @Result = STUFF(@Result, 1, @LengthToRemove, '')
Это заменяет длину ненужной строки пустой строкой.
Вы также можете использовать операцию Cast ():
Declare @name varchar(100);
set @name='....';
Select Cast(@name as varchar(10)) as new_name
Вы также можете использовать приведенное ниже: iif избегает оператора case и добавляет многоточие только при необходимости (подходит только для SQL Server 2012 и более поздних версий), а оператор case более совместим с ANSI (но более подробен)
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