簡體   English   中英

T-SQL:從 nvarchar 列中刪除時間和前面的字符

[英]T-SQL: removing Time and Preceding characters from nvarchar column

我在nvarchar類型的 SQL Server 數據庫表中有一個注釋列,通常包含以下行的文本:

By: SoAndSo 01/01/2020 01:15:10 AM Blah Blah...

我試圖在 select 語句中找到一種方法來刪除 '#:#:# AM/PM' 的字符模式及其前面的所有內容,讓我留下“Blah Blah...”

這樣做時,我不想刪除作品“AM”的合法使用,因為有時評論是用大寫字母輸入的。 我嘗試使用 charindex 但它似乎不允許您指定我正在搜索的特定模式。 我最終失去了作品“am”的合法用途。

您可以使用patindex()查找模式,然后使用stuff()將其刪除:

select stuff(col, pos, pos + 22, '')
from (values ('By: SoAndSo 01/01/2020 01:15:10 AM Blah Blah')) t(col) cross apply
     (values (patindex('%[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [AP]M%', col))) v(pos);

編輯:根據您的評論:

select stuff(col, 1, pos + 22, '')
from (values ('By: SoAndSo 01/01/2020 01:15:10 AM Blah Blah')) t(col) cross apply
     (values (patindex('%[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [AP]M%', col))) v(pos);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM