tôi có chuỗi lớn trong SQL Server. Tôi muốn cắt ngắn chuỗi đó còn 10 hoặc 15 ký tự
Chuỗi gốc
this is test string. this is test string. this is test string. this is test string.
Chuỗi mong muốn
this is test string. this is ......
tôi có chuỗi lớn trong SQL Server. Tôi muốn cắt ngắn chuỗi đó còn 10 hoặc 15 ký tự
Chuỗi gốc
this is test string. this is test string. this is test string. this is test string.
Chuỗi mong muốn
this is test string. this is ......
Câu trả lời:
Nếu bạn chỉ muốn trả về một vài ký tự trong chuỗi dài của mình, bạn có thể sử dụng:
select
left(col, 15) + '...' col
from yourtable
Xem SQL Fiddle với Demo .
Thao tác này sẽ trả về 15 ký tự đầu tiên của chuỗi và sau đó nối ...
phần cuối với phần cuối của nó.
Nếu bạn muốn đảm bảo rằng các chuỗi nhỏ hơn 15 không nhận được ...
thì bạn có thể sử dụng:
select
case
when len(col)>=15
then left(col, 15) + '...'
else col end col
from yourtable
...
thêm vào khi nó không áp dụng
Bạn có thể dùng
LEFT(column, length)
hoặc là
SUBSTRING(column, start index, length)
Tôi nghĩ câu trả lời ở đây rất tuyệt, nhưng tôi muốn thêm một tình huống.
Nhiều lần tôi đã muốn xóa một số lượng ký tự nhất định ở phía trước của một chuỗi mà không cần lo lắng về độ dài của nó. Có một số cách để thực hiện việc này với RIGHT () và SUBSTRING (), nhưng tất cả đều cần biết độ dài của chuỗi mà đôi khi có thể làm chậm mọi thứ.
Thay vào đó, tôi đã sử dụng hàm STUFF ():
SET @Result = STUFF(@Result, 1, @LengthToRemove, '')
Điều này thay thế độ dài của chuỗi không cần thiết bằng một chuỗi rỗng.
Bạn cũng có thể sử dụng thao tác Cast ():
Declare @name varchar(100);
set @name='....';
Select Cast(@name as varchar(10)) as new_name
Bạn cũng có thể sử dụng bên dưới, iif tránh câu lệnh trường hợp và chỉ thêm dấu chấm lửng khi được yêu cầu (chỉ tốt trong SQL Server 2012 trở lên) và câu lệnh trường hợp tuân thủ ANSI hơn (nhưng dài dòng hơn)
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