編輯:我試圖編輯的字段,我意識到是nvarchar(max),並且包含TON的垃圾數據,以及我正在嘗試的擴展開始工作是以逗號分隔值的形式發揮作用的......根據我的要求,這是很不可能的。巨大的感謝所有那些幫助!將字符串更改爲最小/最大值以生成中間值
我問之前,知道我只讀到數據庫訪問權限,不能寫入到臨時表......因爲這是一個解決方案,我認爲......
我使用下面的查詢當前:
USE Database
GO
DECLARE @dn VARCHAR(13)
SET @dn = '%15555555555%'
SELECT switch_extension, line_number, system_configurations.name, system_configurations.description, lines.system_id
FROM lines, system_configurations
WHERE lines.system_id=system_configurations.system_id
AND switch_extension like @dn
AND lines.status = 1
SELECT distinct CS.name, CTD.cti_data_value
FROM cti_source AS CS with (nolock)
JOIN cti_source_data AS CTD with (nolock)ON CS.cti_source_id = CTD.cti_source_id
--WHERE CS.status = 1
AND (CTD.cti_data_name = 'Agent_Ext'or CTD.cti_data_name = 'IVR_Ext')
AND CTD.cti_data_value LIKE @dn
的問題是,CTD.cti_data_value可以包含存儲爲字符串,而不是一個新行的單獨的值15551112223範圍,如「15551112222-15551113333」,而不是15551112222,,...
如果我在這個範圍內查詢@dn(除非開始或結束)範圍的末尾),我沒有得到結果(在上面的例子中,如果我搜索了15551112345,即使它存在於「範圍」中也不會有結果)。
有沒有辦法改變這個在這個單個字符串中得到最小/最大值,然後在最小/最大值之間找到一個結果,還是我上了小溪?
數數字會有所不同。它們可以是長度爲8或11個字符的單個條目,或者如果它是一個範圍,它將是17或23(包括' - ')。 我試圖使用第二種解決方案,但它給出了一個錯誤「Error conversion data type varchar to int」(然後我嘗試了bigint,但這也不起作用) –
是否有值中的非數字字符正試圖轉換? – nscheaffer
它有%作爲通配符,但我甚至刪除了這個嘗試。 http://pastebin.com/15d5q9DJ就是這樣的例子,並且返回「Msg 8114,Level 16,State 5,Line 10 將數據類型nvarchar轉換爲bigint時出錯。 –