我有一个列,其中包含文本值以及以空格分隔的日期。
字符串就像
Application and Removal 2014-11-13 20:46
我想将日期值2014-11-13 20:46
和Application and Removal
分隔为字符串字符中的两列。
目前我所做的是
CASE WHEN ISDATE(RIGHT(FORMNM,16)) = 1 THEN LEFT(FORMNM, LEN(FORMNM) - 17) ELSE FORMNM END as FORMNM,
FORMSTAT,
CASE
WHEN ISDATE(RIGHT(FORMNM,16)) = 1 THEN RIGHT(FORMNM, 16)
END AS FormDate
我知道这不是真正的方法。还有其他办法吗?
答案 0 :(得分:1)
在 SQL-Server 中如果字符串端是静态的 - 总是= Application and Removal
,您可以使用REPLACE
执行以下操作:
DECLARE @str NVARCHAR(MAX) = 'Application and Removal 2014-11-13 20:46'
SELECT REPLACE(@str, 'Application and Removal', '') AS [Date],
'Application and Removal' AS [Other Column]
或者,如果字符串是动态的,您可以使用PATINDEX
DECLARE @str NVARCHAR(MAX) = 'Application and Removal 2014-11-13 20:46'
SELECT LEFT(@str, PATINDEX('%[0-9]%', @str) - 1) AS column1,
RIGHT(@str, LEN(@str) - PATINDEX('%[0-9]%', @str) + 1) AS column2
<强>输出强>
column1 column2
Application and Removal 2014-11-13 20:46
答案 1 :(得分:0)
假设日期/时间的常数 yyyy-mm-dd hh:mi 格式,这里是样本,注意它们有多不同,这就是为什么你总是告诉我们dbms是什么< / p>
T-SQL(MS SQL / Sybase)
RIGHT([that_string_column],16)
的Oracle
SUBSTR(that_string_column, -16, 16)