2017-10-09 16 views
0

我有一列包含表中的这些值。选择包含特定条件的语句

Colum1: dhd-29229 Table: Test 
     dhd-29199 
     dhd-00011 

我的目标是编写一个选择SQL语句将返回以下值:所有数值并没有考虑到dhd-

+0

指定期望的结果也是如此。 – jarlh

+0

您正在使用哪个[DBMS](https://en.wikipedia.org/wiki/DBMS)产品? Postgres的?甲骨文? “_SQL_”只是一种查询语言,而不是特定数据库产品的名称。 –

回答

2

使用like

where column1 like '%29229' 
+0

什么是价值是0001,我试图想出一个解决方案,使用子字符串和charIndex –

+0

@ YvesGuyon。 。 。我试图回答你实际问到的问题。如果你有另一个问题,你应该问*另一个问题。 “像”是解决这个问题的最好方法。 –

0

如果你想正好在这种格式XXX-29199,你必须使用:

where column1 like '___-29229' 

如果你想要只是29229,您可以使用:where column1 like '%29229',但在这种情况下,查询将返回所有以“29229”结尾的值。你可以想到控制这个长度。

https://www.w3schools.com/sql/sql_like.asp

0
在T-SQL(SQL Server)的

: 选择子(colum1,CHARINDEX( ' - ',colum1)+ 1,5)从测试

0

SUB_STRING如果你想有一个严格的“数字只有”不经格式或不一致的答复......试着写一个UDF:

Create FUNCTION [test].[numOnly] 
(@text nvarchar (max)) 
RETURNS nvarchar (max) 
AS 
BEGIN 

    DECLARE 
    @char nvarchar(1), 
    @i_idx int, 
    @temp int, 
    @out nvarchar(max) 

    While len(@text) > 0 
    Begin 
     Set @char = left(@text,1) 
      if ascii(@char) between 49 and 57 
       set @out = isnull(@out,'') + @char 

      Set @text = RIGHT(@text,len(@text)-1) 
    End 

    Return @out 
END 

使用它这样...

select [test].[numOnly]('44--(*)"*()£hllk564kkj3') as 'lala' 

结果:445643