我正在开发一个文本管理应用程序。有许多不同语言的短文本,需要适合具有给定宽度(px)和行数的文本区域。目标是找到所有不使用可用线宽超过一定超出的文本,以便将其显示给用户进行编辑。
例:
在左侧文本中,每行只占用可用空间的四分之一,这很糟糕。右边的文字没问题。
我有这个表lengthcheckresult,左边的例子看起来像这样
id, idText, lineorder, usedspace, availablespace
3 87 1 111 430
4 87 2 116 430
5 87 3 171 430
6 87 4 120 430
和正确的例子一样:
id, idText, lineorder, usedspace, availablespace
3 87 1 408 430
4 87 2 120 430
5 87 3 0 430
6 87 4 0 430
所以我需要一个SQL查询,它查找所有带有行的文本,这些行占用的空间小于可用空间的x%,后面跟着更多的行。你认为这有可能吗?我不知道如何开始。
答案 0 :(得分:1)
使用类似的东西(对表名等做出假设。)
select
A.id
--, (anything else you want)
from dbname.dbo.tblname A
where usedspace > 0
and availablespace > 0 -- Avoid divide by zero
and usedspace / availablespace < 0.5 -- Assume less than 50%? Pick your value.
and A.idText = 1234 -- The text of interest
and exists
( select B.id from dbname.dbo.tblname B
where B.idText = A.idText -- Part of same text
and B.lineorder > A.lineorder -- Only later lines
and B.usedspace > 0 -- Only non-empty lines
)
-- order by etc, as required.
这会查找短于任意百分比(在这种情况下为50%)的文本片段,这些文本也包含以下非空文本。