2011-02-16 47 views
1

需要帮助来做一个简单的任务,在我的表中有一个字符串注释(用户注释)。Sql字符串函数

在我的程序中,我传递了一个参数@input。我想检查字符串是否包含字符串@input,如果它包含@input,则将子样式添加到子字符串(与@input相同)。

例如:如果像注释字符串 - “我已经添加了用户测试用户” 和

@input - "tes" 

我想要的输出

i have added the user <span style="color:red">Tes</span>t user 
+2

对于什么数据库? @ for变量由SQL Server和MySQL支持。 – 2011-02-16 05:49:49

+0

你能让你的问题更清楚吗?类似于创建表格的结果... – Crimsonland 2011-02-16 05:54:52

回答

1

使用T-SQL(微软SQL)

SELECT REPLACE(comment, @input, '<span style="color:red">' + SUBSTRING(comment, PATINDEX('%' + @input + '%', comment), len(@input)) + '</span>') as cmt 
FROM thetable 
WHERE comment LIKE '%' + @input + '%' 

编辑:好的就更难看了,仍然未经测试,但应该为你工作。现在我们将字符串中的确切文本替换回替换。

更新:我刚测试过这段代码,它可以在需要时使用。它在字符串中使用​​找到Tes,并在原始字符串中输出Tes

1
select comment from table where comment like '%' + @input + '%' 

的RDBMS的不管,有在其他RDBMS(SQLserver,Oracle,Mysql)中为LIKE。特别是我的回答是假设你的数据库是因为我发现使用SQL Server的@

编辑: 要获得<span>标签,我想你可能必须使用正则表达式与在<span>标签更换输入字符串输出结果。更好的做法是在底层代码中完成,而不是从格式化的SQL查询中获取结果。 在SQL服务器中,您也可以使用REPLACE函数。

+0

文本更新在哪里? Oracle在变量中也不支持@。 – 2011-02-16 05:57:36