【发布时间】:2017-07-20 18:46:14
【问题描述】:
我想用通配符存储数据,例如,
“我是 %,需要你的帮助”
“谢谢 %”
稍后,我想使用类似的字符串从中检索数据,
“我是 Pruthvesh Pipaliya,需要你的帮助”
“谢谢X先生”
有没有办法在 SQLite 中做到这一点? 如果不在 SQLite 中,他们有什么方法可以使用任何其他数据库或任何其他技术?
【问题讨论】:
我想用通配符存储数据,例如,
“我是 %,需要你的帮助”
“谢谢 %”
稍后,我想使用类似的字符串从中检索数据,
“我是 Pruthvesh Pipaliya,需要你的帮助”
“谢谢X先生”
有没有办法在 SQLite 中做到这一点? 如果不在 SQLite 中,他们有什么方法可以使用任何其他数据库或任何其他技术?
【问题讨论】:
我会在您的应用层而不是数据层进行替换。你已经用 asp.net 和 sql 标记了这个问题,所以类似于:
SELECT * FROM myTable WHERE messageId = 4
获取消息模板
我还将您的通配符更改为 .net 字符串替换格式。因此,例如,在数据库中存储为:
"Thanks {0}."
而不是
"Thanks %."
然后在应用程序中类似:
var salutationTemplate = >> record from db <<
var salutation = string.Format(salutationTemplate, "Name to replace");
这会将 {0}(您也可以使用 {1}、{2} 等)替换为后面的值。
【讨论】:
LIKE 运算符希望左侧有一个字符串,右侧有一个模式。所以给它:
SELECT *
FROM MyTable
WHERE 'Thanks Mr. X' LIKE MyColumn;
【讨论】:
AFAIK 你必须将完整的记录(列)存储在数据库中。然后你可以使用java(例如)创建如下准备好的语句。
String query = "SELECT ... FROM ... WHERE ..."+ //
"AND UPPER(INTRODUCTION) LIKE UPPER(?)";
PreparedStatement pstmt = conn.prepareStatement(query);
stmt.setString(1, "I am %, want your help%");
此外,如果您尝试创建通用电子邮件,则可以使用模板机制。
【讨论】: