2011-01-29 20 views
0

我有了,如果我要選擇具有FileNumber 25行,可以有一個像如何在一個字符串格式中選擇一個數字,多數民衆贊成

Id  FileNumber 
------------------ 
1  0025 
2  CDE01 
3  0035 
4  25 
5  45 
6  250 
7  XYZ1 
8  2500 

現在值的列一個表,我怎麼能懂嗎。我不想要250或2500的行。搜索應該只能得到0025和25.這個列的類型是varchar。然而,我應該能夠搜索任何值,如XYZ1或0025或250

我嘗試使用Like運算符例如:WHERE FileNumber Like'%25%'也嘗試過WHERE FileNumber像'25%'不給我期望的結果 任何幫助將不勝感激

+1

這就是爲什麼正確的數據分型很重要 – 2011-01-29 05:57:55

+1

我喜歡字段名是FileNUMBER,它包含字符=) – bitxwise 2011-01-29 11:00:08

+0

首先你必須定義什麼*你*用'字符串格式的數字'來理解,因爲如果你問* SQL Server *(特別是通過`ISNUMERIC`),它會告訴你,例如'2E1'是一個數字以及'20'和'0020',並且所有三個都具有相同的值20. – 2011-01-29 12:42:20

回答

0

這個怎麼樣?

SELECT * FROM [表名稱] 其中FileNumber LIKE '%25'

4

根據樣本數據,我假設你需要檢索的數是整數。所以,你可以將它們轉換成整數,如果他們使用像這樣的數字:

CASE WHEN ISNUMERIC(s.col) = 1 THEN CAST(s.col AS INT) END 

例子:

WITH sample AS (
    SELECT '0025' AS col 
    UNION ALL 
    SELECT 'CDE01' 
    UNION ALL 
    SELECT '0035' 
    UNION ALL 
    SELECT '25' 
    UNION ALL 
    SELECT '45' 
    UNION ALL 
    SELECT '250' 
    UNION ALL 
    SELECT 'XYZ1' 
    UNION ALL 
    SELECT '2500') 
SELECT CASE WHEN ISNUMERIC(s.col) = 1 THEN CAST(s.col AS INT) END 
    FROM sample s 

您可以使用在派生表/內嵌視圖來比較。您可以使用表格中的邏輯添加computed column

0

請使用此來獲取表中所有具有與逗號分隔值完全匹配的值的行。

SELECT * FROM TABNAME WHERE FILENUMBER in ('25','0025','xyz') 

它將選擇包含filenumber爲25或0025或xyz的所有行。

1

你想要什麼,

  • 比賽正好(25)
  • 結束僅與前導零)(0025)

此代碼,與一些像匹配的

WITH sample AS (
    SELECT '0025' AS col 
    UNION ALL SELECT 'CDE01' 
    UNION ALL SELECT '0035' 
    UNION ALL SELECT '25' 
    UNION ALL SELECT '45' 
    UNION ALL SELECT '250' 
    UNION ALL SELECT 'XYZ1' 
    UNION ALL SELECT 'XYZ125' 
    UNION ALL SELECT '125' 
    UNION ALL SELECT '2500') 
SELECT 
    s.col 
FROM 
    sample s 
WHERE 
    col = '25' 
    OR 
    (REPLACE(col, '25', '00') NOT LIKE '%[^0]%' AND col LIKE '%25') 
0

如果修復數據是安全的......那就做吧。

嘗試是這樣的

更新 集的文件名=鑄造(文件名作爲INT) 其中相同的文件名 '%[1-9]%' --has在它的數 和文件名LIKE「%[^az]%' - 沒有字母

相關問題