我正在尝试制作日历服务,在该日历服务中,有事件,并且事件可以使用可搜索的元数据进行标记.
我希望能够搜索所有标签必须存在的记录(强制标记)和/或存在任何标记的位置(可选标记).
当标签值与'exact'匹配时,我设法创建了一个可以工作的查询.但我无法弄清楚如何返回标签值为LIKE'%value%'的结果.
这是我目前的实施
表和数据
CREATE TABLE Events
(
Id INT,
EventText VARCHAR(500)
);
CREATE TABLE EventDates
(
Id INT,
EventId INT,
StartDate DATETIME,
EndDate DATETIME,
Archived BIT
);
CREATE TABLE Tags
(
Id INT,
Description VARCHAR(50)
);
CREATE TABLE EventTags
(
EventId INT,
TagId INT,
Value VARCHAR(50)
);
INSERT INTO Events VALUES (1, 'Event Name 1');
INSERT INTO Events VALUES (2, 'Event Name 2');
INSERT INTO EventDates VALUES (1, 1, '2013-01-01', '2013-01-02', 0);
INSERT INTO EventDates VALUES (2, 1, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用标签搜索,并且它主要使用LIKE标记匹配的例外.
我已经添加了SQLFiddle的示例代码,并在此处包含它:
表和数据
CREATE TABLE Attendees
(
Id INT,
Text VARCHAR(500)
);
CREATE TABLE Tags
(
Id INT,
Description VARCHAR(50)
);
CREATE TABLE AttendeeTags
(
AttendeeId INT,
TagId INT,
Value VARCHAR(50)
);
INSERT INTO Attendees VALUES (1, 'Attendee 1');
INSERT INTO Attendees VALUES (2, 'Attendee 2');
INSERT INTO Tags VALUES (1, 'Tag Name 1');
INSERT INTO Tags VALUES (2, 'Tag Name 2');
INSERT INTO AttendeeTags VALUES (1, 1, 'Value 1');
INSERT INTO AttendeeTags VALUES (1, 1, 'Value 2'); …Run Code Online (Sandbox Code Playgroud) 我有一个带有object参数的重写方法.我确定这是否是一个数组,然后想确定它的长度:
public override bool IsValid(object value)
{
Type type = value.GetType();
if (type.IsArray)
{
return ((object[]) value).Length > 0;
}
else
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是如果value是int[],当我尝试强制转换时它会出错object[].有没有办法处理这个演员,所以它适用于任何类型的数组?
我有一张文件表和一张标签表.文档标有各种值.
我试图创建这些标签的搜索,并且大多数情况下它正在工作.但是,当我匹配任何标签时,我会收到额外的结果.我只想要匹配所有标签的结果.
我创建了这个来说明问题http://sqlfiddle.com/#!3/8b98e/11
表和数据:
CREATE TABLE Documents
(
DocId INT,
DocText VARCHAR(500)
);
CREATE TABLE Tags
(
TagId INT,
TagName VARCHAR(50)
);
CREATE TABLE DocumentTags
(
DocTagId INT,
DocId INT,
TagId INT,
Value VARCHAR(50)
);
INSERT INTO Documents VALUES (1, 'Document 1 Text');
INSERT INTO Documents VALUES (2, 'Document 2 Text');
INSERT INTO Tags VALUES (1, 'Tag Name 1');
INSERT INTO Tags VALUES (2, 'Tag Name 2');
INSERT INTO DocumentTags VALUES (1, 1, 1, 'Value 1');
INSERT INTO DocumentTags …Run Code Online (Sandbox Code Playgroud) 我正在开发一个允许可配置问题和答案的应用程序.目前最多可以有20个答案,但可能更少.
我的结构如下:
+----+--------+--------------+-------------+
| ID | FormId | QuestionText | AnswerField |
+----+--------+--------------+-------------+
| 1 | 1 | Name | Answer01 |
| 2 | 1 | Address | Answer02 |
| 3 | 1 | Phone | Answer03 |
| 4 | 1 | Email | Answer04 |
| 5 | 2 | First Name | Answer01 |
| 6 | 2 | Surname | Answer02 |
+----+--------+--------------+-------------+
Run Code Online (Sandbox Code Playgroud)
+----+--------+----------+------------+--------------+--------------+----------------+----------+----------+
| ID | FormId | RecordId | Answer01 …Run Code Online (Sandbox Code Playgroud)