2011-12-19 82 views
-1

在字符串的中間兩個值之間的int值我有一個nvarchar列具有值的像查找與nvarchar列一列,在

'21:15:00 1390年9月10日星期一'

我想選擇'1390/09/07'和'1390/09/15'之間有第三部分(意思是'1390/09/10')的行。出於某些原因,我不想更改列值的結構以使第三部分開始或結束字符串。我想這

SELECT * FROM表WHERE BETWEEN '%第1390/09/0.07%' 和 '%1390至09年/ 15%'

列,但它不會工作。我使用SQL Server 2008

+2

什麼RDBMS?無論如何,你應該把你的桌子重新組合成1NF。您不應該分解列值才能執行此類查詢。 – 2011-12-19 15:48:22

+0

@馬丁史密斯,所以你的意思是我們不能做這樣的事情? – hamze 2011-12-19 15:52:37

+1

你**可以**,但這是完全不可檢索的,所以你的查詢將總是必須掃描所有的行,以及不必要的複雜和驗證數據的問題。 – 2011-12-19 15:53:23

回答

1

要提取你必須做這個日期:

DECLARE @t VARCHAR(100) ='21:15:00 monday 1390/09/10 morning' 
SELECT CONVERT(DATETIME2, SUBSTRING(@t, PATINDEX('%[0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9]%',@t),10),111) 

我用DATETIME2爲我所用SQL Server 2008的

我希望這可以幫助您。