2015-08-26 67 views
0

我正在使用SQL Server 2012Entity framework 6在結果之前過濾SQL Server表數據查詢

問題是:我得到nvarchar字符串與數字,但也有字符如「 - 」和我正在尋找的數字內的符號。

假設我已經將值123456-1234A存儲在表中。有沒有方法可以選擇不帶「 - 」和「A」的值?

我想選擇「1234561234」並獲取返回值123456-1234A。有沒有這樣的過濾功能,或者是清理數據庫的唯一方法,並確保數據以相同的方式,相同的格式插入,並且您想要刪除?

感謝

+0

使用REPLACE函數更換'-',並與空字符串「」 – lad2025

+0

所有非數字謝謝你,我可能會誤解你,但那樣只會幫助,如果我使用格式化結果。在這種情況下,我還沒有結果。我只知道數字,而不是我執行查詢時的其他角色。 – stefan

+0

那麼,你想只從領域得到的數字?對? – Marusyk

回答

0

根據註釋:

什麼,我需要的是SELECT * FROM somecolumn其中number = 1234561234" 應該返回 行,其中數字是 「123456-1234A」

首先,你可以創建一個描述here功能:

CREATE FUNCTION dbo.udf_GetNumeric 
(@strAlphaNumeric VARCHAR(256)) 
RETURNS VARCHAR(256) 
AS 
BEGIN 
    DECLARE @intAlpha INT 
    SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric) 
    BEGIN 
    WHILE @intAlpha > 0 
    BEGIN 
     SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '') 
     SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric) 
    END 
    END 
    RETURN ISNULL(@strAlphaNumeric,0) 
END 
GO 

然後嘗試類似:

select * from somecolumn where dbo.udf_GetNumeric(number) = 1234561234 
+0

也可以使用實體框架來實現相同的結果:var query =從Database.SomeColumn中的SomeColumn其中Table.SomeColum.Replace(「 - 」,「」).Equals(「1234561234」)'where替換可以擴展以取代不僅僅是 - 當然。 @MegaTron – stefan

+0

是的,但不清楚你想在sql-server端或C#端進行過濾。並根據評論'select * from somecolumn ...'似乎你需要在sql-server端過濾 – Marusyk