CASE WHEN (x) > i THEN LEFT (x, j) + y ELSE x END
CASE WHEN LEN (x) > i THEN LEFT (x, j) + y ELSE x END
我想知道 SQL 服务器中是否有单一功能,或者至少有一个没有条件的表单 CASE
,可以替代以下功能:
CASE WHEN LEN (character_expression) > result_length THEN LEFT (character_expression, resultWithoutPad_length) + padWith_expression ELSE character_expression END
所以
CREATE TABLE foo (bar VARCHAR (MAX));
INSERT INTO foo (bar) VALUES ('123456'), ('1234567'), ('12345678'), ('123456789'), ('1234567890'), ('12345678901'), ('123456789012');
SELECT CASE WHEN LEN (bar) > 10 THEN LEFT (bar, 7) + '...' ELSE bar END FROM foo;
将return以下结果:
(No column name)
----------------
123456
1234567
12345678
123456789
1234567890
1234567...
1234567...
我尝试了 STUFF (character_expression, start, length, replaceWith_expression)
,但我找不到修改它以满足我的要求的方法。
这是您应该在表示层而不是数据库级别执行的操作。如果您希望 SQL、select 显示您想要显示的字段并在 HTML 或任何您的应用程序中添加省略号。
如果一定要在数据库层面做,可以写一个UDF:
CREATE FUNCTION ellipsis(@str VARCHAR(MAX), @len INT) RETURNS VARCHAR(MAX)
AS
BEGIN
SET @str = CASE WHEN LEN(@str) > @len THEN LEFT(@str, @len - 1) + '…' ELSE @str END
RETURN @str
END;
GO
CREATE TABLE foo (bar VARCHAR (MAX));
和
INSERT INTO foo (bar) VALUES ('123456'), ('1234567'), ('12345678'), ('123456789'), ('1234567890'), ('12345678901'), ('123456789012');
SELECT dbo.ellipsis(bar, 7) FROM foo;
结果:
123456
1234567
123456…
123456…
123456…
123456…
123456…
我想知道 SQL 服务器中是否有单一功能,或者至少有一个没有条件的表单 CASE
,可以替代以下功能:
CASE WHEN LEN (character_expression) > result_length THEN LEFT (character_expression, resultWithoutPad_length) + padWith_expression ELSE character_expression END
所以
CREATE TABLE foo (bar VARCHAR (MAX));
INSERT INTO foo (bar) VALUES ('123456'), ('1234567'), ('12345678'), ('123456789'), ('1234567890'), ('12345678901'), ('123456789012');
SELECT CASE WHEN LEN (bar) > 10 THEN LEFT (bar, 7) + '...' ELSE bar END FROM foo;
将return以下结果:
(No column name) ---------------- 123456 1234567 12345678 123456789 1234567890 1234567... 1234567...
我尝试了 STUFF (character_expression, start, length, replaceWith_expression)
,但我找不到修改它以满足我的要求的方法。
这是您应该在表示层而不是数据库级别执行的操作。如果您希望 SQL、select 显示您想要显示的字段并在 HTML 或任何您的应用程序中添加省略号。
如果一定要在数据库层面做,可以写一个UDF:
CREATE FUNCTION ellipsis(@str VARCHAR(MAX), @len INT) RETURNS VARCHAR(MAX)
AS
BEGIN
SET @str = CASE WHEN LEN(@str) > @len THEN LEFT(@str, @len - 1) + '…' ELSE @str END
RETURN @str
END;
GO
CREATE TABLE foo (bar VARCHAR (MAX));
和
INSERT INTO foo (bar) VALUES ('123456'), ('1234567'), ('12345678'), ('123456789'), ('1234567890'), ('12345678901'), ('123456789012');
SELECT dbo.ellipsis(bar, 7) FROM foo;
结果:
123456 1234567 123456… 123456… 123456… 123456… 123456…