我允许用户使用唯一的PhotoName nvarchar(20)标记他们在我们网页上上传的照片。
我想使用默认值填充网页文本框字段,以防他们不想打扰使用唯一名称。例如。照片1,照片2等。
所以我需要检查是否已使用“照片1”,如果是,则将默认设置为“照片2”。如果使用照片2,则默认为照片3等。
他们也可以输入自己的名字,例如“玛丽的肖像”。
我可以使用任何T-SQL来搜索PhotoName列中第一个可用的“间隙”吗?例如。它可能会返回例如“Photo 78”免费使用。
答案 0 :(得分:1)
在Sql Sever 2012+中使用try_parse()
来过滤“photo xxxx”字符串的提醒,其中xxxx表示整数。演示:
select coalesce(max(cast (nt as int)), 0) + 1 as new_number
from (
values ('photo 20'),('ph 45'),('photo a'),('photo 5.45'),('photo 1E-3')
) t(title)
cross apply (
select nt = case when title like 'photo %' then stuff(title,1,6,'') end
) c1
where TRY_PARSE(nt as int) is not null
在旧版本中使用isnumeric(nt)=1 and not nt like '%[-+$.,\E]%'