我有一个文本列,我想看看它是否有超过4000个字符。如果它的字符数超过4000个,则从最右边的字符开始,然后返回4000个字符。
我意识到以下代码不正确。但这是一个开始。
select
case
when datalength(column1) > 4000 then
right(column1, 4000)
case datalength(column1) <= 4000 then
column1
end
from table_1
答案 0 :(得分:1)
在SQL Server中:
SELECT CASE
WHEN (DATALENGTH(column1) > 4000)
THEN SUBSTRING(column1, DATALENGTH(test) - 3999, DATALENGTH(column1))
ELSE column1
END
FROM table_1
不太好,因为你重新计算DATALENGTH(第1列)三次。
修改强>
使用CTE仅计算一次:
WITH CTE AS
(
SELECT DATALENGTH(column1) AS LENGTH, column1 FROM table_1
)
SELECT CASE
WHEN (LENGTH > 4000)
THEN SUBSTRING(column1, LENGTH - 3999, LENGTH)
ELSE column1
END
FROM CTE
答案 1 :(得分:0)
这适用于Oracle。以下是有关Substr:http://psoug.org/definition/SUBSTR.htm
的文档select (case when length(column1) > 4000
then substr(column1, -4000)
else column1
end)
from table_1;
答案 2 :(得分:-1)
在SQL Server中
SELECT
CASE WHEN datalength(MyColumn) > 4000 THEN SUBSTRING(REVERSE(MyColumn), 1, 4000) ELSE MyColumn END AS MyGenCol