我想将以下列分为两列 @之前的那个和@ 之后的那个它还好,如果我需要编写自己的函数,只要不是硬编码如何仅将数字分隔为两列
12 @ 300 24 @ 524 1 @ 788 412 @ 63 014 @ 786 16 @ 8063
谢谢大家。
我想将以下列分为两列 @之前的那个和@ 之后的那个它还好,如果我需要编写自己的函数,只要不是硬编码如何仅将数字分隔为两列
12 @ 300 24 @ 524 1 @ 788 412 @ 63 014 @ 786 16 @ 8063
谢谢大家。
尝试
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演示
这工作完美!谢谢! – 1EnemyLeft
我不知道你用的是什么SQL的味道,但在大多数应用中,下面的工作:
select
substr('yourString',1,index('yourString','@') - 1) as col1,
substr('yourString',index('yourString','@') + 1) as col12,
from
yourTable
;
上述代码是为teradata sql server编写的,但大多数应用程序具有相同的字符串函数。
希望这会有所帮助。
请更具体地说明你想要得到的数字:应该是{'12','24','1',...}吗?也许{'300','524','788',...}?或{'12300','24524','1788',...}?或甚至{'12','24','1',...,'300','524','788',...} – dasblinkenlight
你能找到一个字符串中的字符?你可以在某个位置之前/之后采用子串吗?你能删除字符串中的前导/尾部空格吗? – vav