sql - 替换 SQL 中字符串的开头

标签 sql sql-server

SELECT REPLACE([strUrl], '/myoldurl', '/mynewurl') FROM [UrlRewrite]

strUrl/myoldurl/myoldurl_something_else ,它返回 /mynewurl/mynewurl_something_else .我希望它是 /mynewurl/myoldurl_something_else .

如何在 SQL 中从字符串的开头替换?

最佳答案

SELECT REPLACE([strUrl], '/myoldurl/', '/mynewurl/') FROM [UrlRewrite]

解决马丁的观点:
SELECT CASE WHEN [strUrl] = '/myoldurl' THEN '/mynewurl' ELSE REPLACE([strUrl], '/myoldurl/', '/mynewurl/') END FROM [UrlRewrite]

或者
SELECT 
    CASE 
    WHEN LEFT([strUrl], LEN('/myoldurl')) = '/myoldurl'
        THEN '/mynewurl' + SUBSTRING([strUrl], LEN('/myoldurl')+1, LEN([strUrl]))
    ELSE [strUrl]
    END
FROM [UrlRewrite]

关于sql - 替换 SQL 中字符串的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11339801/

相关文章:

MySQL 5.6 命令行客户端创建表1064错误

Java - 将 .csv 导入数据库 - 排除第一行

sql-server - 存储总数或即时计算?

php - sql server 存储过程使用 varchar max 作为参数

sql - '-' 附近的语法不正确,使用来自 LoginUserRolePermission.zip 的脚本

mysql - 为什么插入语句不起作用?

mysql - 选择相对于另一个表的最近日期

java - 查找数据库表的唯一约束

Java结果集添加零

sql-server - SSRS从第二个字符串之前的字符串中提取子字符串