❶ 在sql中怎樣實現字元串大小的比較
sql裡面字元串沒有大小之分,只有長度之分,可以比較長度大小,但是想用一條sql語句直接拿到大小結果來說也不太方便,最好是藉助程序或者sql腳本來做,我用oracle試了下,用case when函數是可以直接比較大小的,比如第一個值比第二個大輸出0,否則輸出1:
select(casewhenlen1>len2then0whenlen1<len2then1end)asresfrom(
selectlength('asd')aslen1,length('as')aslen2fromal)t
❷ SQL字元串比較
寫兩個函數,得到前後兩部分,再進行比較,但是這樣效率比較低,如果經常要比較,就拆成兩欄位。你的數據是有規律的,中間用,分隔了呀。sql
server
示例如下:
declare
@value
varchar(100)
set
@value='123.0000,456.1111'
select
left(@value,
charindex(',',@value,0)-1)
--左邊
select
right(@value,
len(@value)-
charindex(',',@value,0))
--右邊
❸ sql中比較一個字元串中是否含有另一個字元串中的一個字元
1、既然你要判斷其中一個是否包含了另一個,那你條件肯定要給SQL,SQL才能幫你找到的,2、這個條件肯定是你要給出的。比如首岩str1='1`2`3`4`5'str2='1`2`3`4'那你叫SQL判斷的橘爛其中的話,可以:Select
CharIndex('5',str1)
--這里的「5」具體要代入什麼值去判斷,就要你給出來了。Select
CharIndex('2`3',str1)
--這類的SQL是可以幫你去判斷的。不包含的話就返回0否則就返回第一個相同字元的位置,比如這個就返回3 給你寫一圓芹漏個函數來操作:
Create
function
fSearch(@inStr
varchar(1000),@fndStr
varchar(1000),@doc
varchar(10))
returns
bit
as
begin
declare
@ii
int,@rStr
varchar(1000),@c
varchar(1000)
select
@rStr=@fndStr
while
len(@rStr)>0
begin
Select
@ii=Charindex(@doc,@rStr)
if
@ii=0
begin
return
0
end
else
begin
select
@c=substring(@rStr,1,@ii-1)
if
charIndex(@c,@inStr)>0
return
1
else
begin
select
@rStr=substring(@rStr,@ii+len(@doc),len(@rStr))
end
end
end
return
0
end
--參數:@inStr
待搜索字串,@fndStr
搜索字串,@doc
分隔符--
例:select
dbo.fSearch('1,2,3,4,5,6','3,6,5,8,2',',')
返回0-不匹配,返回1-匹配(@instr中有@fndStr內容)--可以用於表搜索,如:--
Select
*,dbo.fSearch(str,'3,6,5,8,2',',')
as
是否匹配 from
表名--
@fndStr和@doc兩個參數就需要你自己提供了,@inStr可以是數據表裡的某個待搜索欄位名
❹ sql中比較一個字元串中是否含有另一個字元串中的一個字元
sql中比較一個字元串中是否含有另一個字元或字元串可用charindex函數。
如:
selectcharindex('愛','我愛祖國')
結果為:
返回值為0,則代表「a」不存在於「我愛祖國」字元串中。
語法:
CHARINDEX ( expression1 , expression2 , [ start_location ] )
參數:
expression1
一個表達式,其中包含要尋找的字元的次序。expression1 是一個短字元數據類型分類的表達式。
expression2
一個表達式,通常是一個用於搜索指定序列的列。expression2 屬於字元串數據類型分類。
start_location
在 expression2 中搜索 expression1 時的起始字元位置。如果沒有給定 start_location,而是一個負數或零,則將從 expression2 的起始位置開始搜索。
❺ 知識積累之怎樣在SQL語句中比較兩個字元串類型時間
1、合理的做法是先轉換成日期類型,再比較;
2、但有時也可以利用字元串進行比較,如
SELECT Count(*)
FROM Orders
WHERE BizDate > '2016-01-01' -- 注意,日期的字元串格式2者要匹配,否則可能得不到正確的結果。
❻ sql如何高效的比對兩個字元串的相似度
如表格A中欄位a1有一條字元串記錄Rec1內容為 「我的家在哪裡?」;然後要從B表中找出一條字元串記錄Rec2內容與Rec1最相似的,如:「我的家在浙江?」 select A.a1, max(DIFFERENCE(A.a1,B.相應欄位)) from A cross join B group by A.a1
❼ 在sql中字元串怎麼與數值類型比較
Oracle比較字元串是根據ASCII碼來的,第一個字母的ASCII大小比較如果相等再比較下一個,類推。
字元串和數字進行操作是會報異常的,因為類型不一樣不能進行比較。
Oracle在執行SQL的時候有些時候會自動轉換,比如:
select * from chan_customer cc where cc.customer_id = '1';
即使customer_id是數字型的也可以查出來,但是Oracle有區分字元和數字
就是通過加不加單引號來區分。
❽ sql語句,部分字元比較查詢
什麼資料庫,就是截取計算唄。
其他的資料庫我不是很清楚,如果是oracle的話,可以用截取函數直接操作,只要設定開始的值為-3就可以了,這樣就表示可以,負數表示從右向左截取。
因為oracle可以默認數字和字元互換,所以直接用字元的截取substr就可以substr(欄位,-3),至於其他資料庫我不知道可不可以這樣用,你可以試試,如果不能從右向左截取,那麼就除100,然後直接用trunc截取就可以了。
如果不除以100,而是直接用trunc(欄位,-2)的話,那麼截取出來是1200,1900,800,當然這個也能比較,只是要把後面的10換成1000就行,或者這里再除以100
❾ SQL字元串怎麼分解比較
寫兩個函數,得到前後兩部分,再進行比較,但是這樣效率比較低,如果經常要比較,就拆成兩欄位。你的數據是有規律的,中間用,分隔了呀。sql server 示例如下:
declare @value varchar(100)
set @value='123.0000,456.1111'
select left(@value, charindex(',',@value,0)-1) --左邊
select right(@value, len(@value)- charindex(',',@value,0)) --右邊