簡體   English   中英

SQL Server查詢:刪除兩個字符的最后一個索引之間的文本?

[英]SQL server query: remove text between the last index of two characters?

問題

我有一個存儲文件密鑰的字段,例如:

dev/application/document_type_name/document 12345-67890_123.pdf

我需要選擇末尾沒有數字的鍵,因此值看起來像:

dev/application/document_type_name/document 12345-67890_.pdf

潛在策略

自從我完成T-SQL以來已經有一段時間了,但是從.NET方面來看,我認為一般策略是:

  • 獲取下划線字符的最后一個索引
  • 獲取句號字符的最后一個索引。
  • 用空格替換這兩個字符之間的值。

在C#中,我認為應該是這樣的:

var test = "dev/application/document_type_name/document 12345-67890_123.pdf"
var indexOfUnderscore = test.LastIndexOf("_");
var indexOfPeriod = test.LastIndexOf(".");
var textToReplace = subtring(indexOfUnderscore + 1, indexOfPeriod -1);
var output = test.Replace(textToReplace, String.Empty);

筆記:

  • 每個鍵都將具有該格式
  • 下划線和句點之間的值長度可能不同(可以是1、12345等。
  • 最終結果應保留下划線和句號

嘗試

select left(@s,len(@s)-charindex('_',REVERSE(@s)))+'_.pdf'

@s是您的字符串。 或者如果文件擴展名可以更改

select left(@s,len(@s)-charindex('_',REVERSE(@s))+1) 
     + right(@s,charindex('.',REVERSE(@s)))

暫無
暫無

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

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