我有一个名为LastWebpage的字段,在字段中它存储网页.asp页面名称
我必须编写一个脚本,我只需要使用jl_AssessmentDirect.asp
名称而不是4000_1_jl_AssessmentDirect.asp
。我如何摆脱4000_1_
。请帮忙。
感谢。
答案 0 :(得分:1)
以下是两种方法,我假设数据并不总是相同,这只是为了向您展示这些功能是如何工作的
正确或替换是我的首选方法
DECLARE @v VARCHAR(100)
SELECT @v = '4000_1_jl_AssessmentDirect.asp'
SELECT REPLACE(@v,'4000_1_','')
或
DECLARE @v VARCHAR(100)
SELECT @v = '4000_1_jl_AssessmentDirect.asp'
DECLARE @r VARCHAR(100)
SELECT @r ='4000_1_'
--if you have spaces RTRIM and LTRIM everything
SELECT RIGHT(@v,LEN(@v) -LEN(@r))
如果内容发生变化,您可以将其转储到变量
中DECLARE @v VARCHAR(100)
SELECT @v = '4000_1_jl_AssessmentDirect.asp'
DECLARE @r VARCHAR(100)
SELECT @r ='4000_1_'
SELECT REPLACE(@v,@r,'')
理想情况下,您希望将此类列更新为仅包含URL而不包含任何其他内容
答案 1 :(得分:1)
“这取决于”
如果始终为“4000_1_”,请按照SQLMenace的回答使用REPLACE。
如果是任何字符串的固定长度,请使用SUBSTRING。无需首先解决LENGTH
SUBSTRING(MyValue, 8, 8000)
如果右侧是固定长度且不需要的部分是可变长度,请使用右侧
如果双方都是可变的,你需要像
SUBSTRING(MyValue, PATINDEX('%[_]1[_]%', MyValue) + 3, 8000)
编辑:
如果你总是想要“jl”...
SUBSTRING(MyValue, PATINDEX('%jl%', MyValue), 8000)
答案 2 :(得分:0)
除了此处的所有建议,您还可以使用stuff。
declare @s varchar(100)
set @s = '4000_1_jl_AssessmentDirect.asp'
select stuff(@s, 1, 7, '')
删除jl
declare @s varchar(100)
set @s = '4000_1_jl_AssessmentDirect.asp'
select stuff(@s, 1, charindex('jl', @s)-1, '')