[英]SQL Server searching a column of text for an exact phrase
我正在使用SQL Server,並且試圖弄清楚如何在dbo.tickets中的列tags
中進行搜索,以及如何搜索諸如lwr_tickets
的短語。
現在,我有一個查詢,它將按日期獲取所有用戶的票證並在其中顯示名稱。 我試圖弄清楚如何查看在哪個分支的票。
因此,總票數為lwr_tickets
。 數據庫中的tags
字段名具有一長串的標簽名,每個票證都用逗號分隔。 因此,我試圖弄清楚如何編寫遍歷tag列的內容,然后只返回其中包含lwr_tickets
的內容,以獲取該分支的總數。
任何幫助將不勝感激。
找到所有門票:
select
u.Id,
u.Name,
t.submitter_id,
COUNT(*) as numberOfTickets
from Users as u
join Tickets as t on t.submitter_id = u.Id and t.created_at between '2017/11/01' and '2018/08/23'
group by u.Id, u.Name, t.submitter_id
現在嘗試添加將在其中搜索lwr_tickets
嘗試:
select
u.Id,
u.Name,
t.submitter_id,
COUNT(*) as numberOfTickets
from Users as u
join Tickets as t on t.submitter_id = u.Id and t.created_at between '2017/11/01' and '2018/08/23'
group by u.Id, u.Name, t.submitter_id
where t.tags = "lwr_tickets"
以逗號分隔的列表不應該存儲在字符串。 關系數據庫不應該這樣工作。 原因很多。 您的數據應該有一個ticketTags
表,每個票證和每個標簽一行。
有時,我們真的會,真的,真的,真的會做出糟糕的設計決定。 您可以使用like
此:
select u.Id, u.Name, t.submitter_id,
count(*) as numberOfTickets
from Users u join
Tickets t
on t.submitter_id = u.Id
where t.created_at between '2017-11-01' and '2018-08-23' and
',' + t.tags + ',' like '%,' + 'lwr_tickets' + ',%'
group by u.Id, u.Name, t.submitter_id;
筆記:
where
后去from
之前group by
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.