2014-05-02 66 views
0

我想将以下列分为两列 @之前的那个和@ 之后的那个它还好,如果我需要编写自己的函数,只要不是硬编码如何仅将数字分隔为两列

 
12 @ 300 
24 @ 524 
1 @ 788 
412 @ 63 
014 @ 786 
16 @ 8063 

谢谢大家。

+0

请更具体地说明你想要得到的数字:应该是{'12','24','1',...}吗?也许{'300','524','788',...}?或{'12300','24524','1788',...}?或甚至{'12','24','1',...,'300','524','788',...} – dasblinkenlight

+0

你能找到一个字符串中的字符?你可以在某个位置之前/之后采用子串吗?你能删除字符串中的前导/尾部空格吗? – vav

回答

0

尝试

SELECT RTRIM(LEFT(column1, CHARINDEX('@', column1) - 1)) number1, 
     LTRIM(RIGHT(column1, LEN(column1) - CHARINDEX('@', column1))) number2 
    FROM table1 

输出:

 
| NUMBER1 | NUMBER2 | 
|---------|---------| 
|  12 |  300 | 
|  24 |  524 | 
|  1 |  788 | 
|  412 |  63 | 
|  014 |  786 | 
|  16 | 8063 | 

这里是SQLFiddle演示

+0

这工作完美!谢谢! – 1EnemyLeft

0

我不知道你用的是什么SQL的味道,但在大多数应用中,下面的工作:

select 
     substr('yourString',1,index('yourString','@') - 1) as col1, 
     substr('yourString',index('yourString','@') + 1) as col12, 
    from 
     yourTable 
    ; 

上述代码是为teradata sql server编写的,但大多数应用程序具有相同的字符串函数。

希望这会有所帮助。

相关问题