Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql字符串函数_Sql_String - Fatal编程技术网

Sql字符串函数

Sql字符串函数,sql,string,Sql,String,需要帮助以sql字符串执行简单任务在我的表中有一个字段注释(用户注释) 在我的过程中,我正在传递一个参数@input。我想检查字符串是否包含字符串@input,如果它包含@input,则向子字符串添加一些样式(与@input相同) 例如:如果注释字符串像“我已经添加了用户测试用户”和 我希望输出为 i have added the user <span style="color:red">Tes</span>t user 我已经添加了用户测试用户 不管RDBMS是什么

需要帮助以sql字符串执行简单任务在我的表中有一个字段注释(用户注释)

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

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

我希望输出为

i have added the user <span style="color:red">Tes</span>t user
我已经添加了用户测试用户
不管RDBMS是什么,在其他RDBMS(SQLserver、Oracle、Mysql)中都有类似的
。具体来说,我的答案是假设您的数据库是Sql server,因为我注意到使用了
@

编辑: 要获得
标记,我认为您可能必须使用regex在输出结果中用
标记替换输入字符串。更好的做法是在底层代码中执行,而不是从具有格式的SQL查询中获取结果。 在SQL server中,您也可以使用
替换
函数。

使用T-SQL(Microsoft SQL)

选择替换(comment,@input,”+子字符串(comment,PATINDEX('%'+@input+'%,comment)),len(@input))+''作为cmt
从表格
其中的注释类似于“%”++@input++“%”
编辑:好的,甚至更难看,仍然未经测试,但应该适合你。现在,我们将把字符串中的精确文本替换回replace


更新:我刚刚测试了这段代码,它可以根据需要工作。它使用
'Tes'
在字符串中查找
Tes
,并输出原始字符串中的
Tes

什么数据库?@SQL Server和MySQL支持for变量。您能更清楚地回答您的问题吗?类似于创建表的结果…文本更新在哪里?Oracle在变量中也不支持@。感谢回复,Sql server 2005-但我的问题是,我通过使用s“elect comment from table where comment like@input”语句获得了所有注释,但我想修改字符串中的子字符串(like@input),正如我在第一部分中解释的那样post@OMG小马-啊。。这个问题是在我的回答之后编辑的。很抱歉,没有看到编辑。标记在问题的第一个版本中不可见。这就是我的答案。即使您使用LIKE,它也只能与@input进行精确匹配。您需要添加通配符。您好,谢谢…但问题是它将修改实际字符串…例如,如果字符串“我已删除用户‘测试用户’”。这将生成并输出-“我已删除用户‘测试’用户”…这里的名称“Test”改为Test…我想你明白我的问题了,这是你在使用不区分大小写的排序规则时遇到的问题。
i have added the user <span style="color:red">Tes</span>t user
select comment from table where comment like '%' + @input + '%'
SELECT REPLACE(comment, @input, '<span style="color:red">' + SUBSTRING(comment, PATINDEX('%' + @input + '%', comment), len(@input)) + '</span>') as cmt
FROM thetable
WHERE comment LIKE '%' + @input + '%'