2015-12-03 58 views
0

我有我的結果是按照下面的格式數量的記錄的SQL函數:是否有您可以排除與整數結果和人物

TJ12345

所以,後面一組的任何2個字符整數。有沒有一種方法可以從結果中排除這些記錄?

結果中的其他記錄至少有前三個字母的所有字符;

tfydu734fdsha21344hdsifhsidufh2

SELECT name, Filername 
FROM [Permissions] with (nolock) 
WHERE (Name like '" & txtSearch.Text & "' 
      or ACEName like '" & txtSearch.Text & "') 
      and (ACEName not like '%Error%' 
      and ACEName not like '%nas_%' 
      and ACEName not like '%NASA%') 

感謝所有幫助

+0

正在使用什麼數據庫?你有什麼嘗試? –

+0

它取決於您使用的確切DBMS。 –

+0

Microsoft SQL服務器? –

回答

0

結果中的其他記錄都字符至少頭三個字母

,所以你可以簡單地使用

WHERE ACEName LIKE '[A-z][A-z][A-z]%' 
+0

正是我所需要的,就這一點而言,它是什麼符號,如果它是一個整數例如[1-9] ?? –

+0

好吧,而不是'[0-9]'。但是如果你不知道第一個整數在哪個位置,你需要在它之前有一個'%'。 – Andre

+0

好的歡呼聲,謝謝你 –

2

好,任務 「確定字符串包含兩個字母加數字」 可以解決的,如:

declare @x nvarchar(max) 
select @x = 'TJ12345' 
select 
    case 
     when @x like '[A-z][A-z]%' and isnumeric(right(@x, len(@x) - 2)) = 1 then 1 
     else 0 
    end as Should_Be_Excluded 

主要思想:首先檢查它是否以兩個字母開頭,然後將它們去掉並檢查剩餘的字符串是否僅包含使用0123的數字功能。

因此,從字面上看,您需要將此條件反轉,並將其置於where條件以排除這些記錄。

select * 
from your_table 
where 
    your_field not like '[A-z][A-z]%' 
    or isnumeric(right(your_field, len(your_field) - 2)) = 0 
+0

我如何將此添加到上面的語句^^ –

+0

我需要排除任何在位置3處具有整數的結果。這是否使它更容易? –

+0

@ A.C查看更新。但請注意 - 如果您真正的排除標準僅僅是「不是位置3的數字」,那麼它就更簡單了。只是使用'isnumeric(substring(your_field,2,1))' –

相關問題