當前位置:首頁 » 編程語言 » sqlserver查找字母
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlserver查找字母

發布時間: 2022-11-25 18:36:00

Ⅰ 怎樣批量查找替換整個sqlserver資料庫中的字元,網站換域名了,

沒辦法,不可能一個庫一下全換了,沒那樣的操作。
但你可以這樣操作。
1檢查每張表的每個欄位,查每個字元型的,欄位,是否有可能有要修改的數據。這個的手工一個一個的確定下來。
2update 表名 set 欄位1=replace (欄位1,'原網址','新網址') .

這樣一個一個的替的話,也快,

REPLACE
用第三個表達式替換第一個字元串表達式中出現的所有第二個給定字元串表達式。

語法
REPLACE ( 'string_expression1' , 'string_expression2' , 'string_expression3' )

參數
'string_expression1'

待搜索的字元串表達式。string_expression1 可以是字元數據或二進制數據。

'string_expression2'

待查找的字元串表達式。string_expression2 可以是字元數據或二進制數據。

'string_expression3'

替換用的字元串表達式。string_expression3 可以是字元數據或二進制數據。

返回類型
如果 string_expression(1、2 或 3)是支持的字元數據類型之一,則返回字元數據。如果 string_expression(1、2 或 3)是支持的 binary 數據類型之一,則返回二進制數據。

示例
下例用 xxx 替換 abcdefghi 中的字元串 cde。

SELECT REPLACE('abcdefghicde','cde','xxx')
GO

下面是結果集:

------------
abxxxfghixxx
(1 row(s) affected)

Ⅱ sqlserver 如何查詢某個欄位是以 字母開頭,數字結束的字元串。 正則怎麼寫謝謝

1> select PATINDEX( '[a-zA-Z]%[0-9]', 'IBM' )
2> go

-----------
0

(1 行受影響)
1> select PATINDEX( '[a-zA-Z]%[0-9]', 'Xbox360' )
2> go

-----------
1

(1 行受影響)
1> select PATINDEX( '[a-zA-Z]%[0-9]', '360' )
2> go

-----------
0

(1 行受影響)

Ⅲ SQL中怎樣提取純數字或者純字母的欄位

完全按照DB2語法設計:
drop function TEST
go
create function test(@input varchar(100))
returns int
begin atomic
declare @int int default 0;
declare @input_lenght int default 0;
set @input_lenght = length(@input);
while @input_lenght <> 0 do
if ( substr(@input,length(@input) - @input_lenght +1,1) in ('0','1','2','3','4','5','6','7','8','9') ) then
set @int = @int + 0;
elseif ( substr(@input,length(@input) - @input_lenght +1,1) in ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')) then
set @int = @int - 1;
end if;
set @input_lenght = @input_lenght -1;
end while;
if ( @int = 0 or @int = -1* length(@input)) then --- 如果累積為0全是數字;如果累積正好是-1乘以長度則正好全是欄位
return 0;
else
return 1;
end if;
end
go
select test ('123456') from sysibm.al 結果是 0
select test ('123b456a') from sysibm.al 結果是 1
select test ('abcdefg') from sysibm.al 結果是 0

Ⅳ sql中怎麼根據漢字的拼音首字母查詢

--SQLServer:
---測試數據---
ifobject_id('[pactinfo]')isnotnulldroptable[pactinfo]
go
createtable[pactinfo]([ID]int,[pactname]varchar(4))
insert[pactinfo]
select1,'正常'unionall
select2,'中國'unionall
select3,'做飯'unionall
select4,'加發'

---引用前輩們的一個函數---
createfunctionf_GetPy(@strnvarchar(4000))
returnsnvarchar(4000)
as
begin
declare@strlenint,@renvarchar(4000)
declare@ttable(chrnchar(1)collateChinese_PRC_CI_AS,letternchar(1))
insertinto@t(chr,letter)
select'吖','A'unionallselect'八','B'unionall
select'嚓','C'unionallselect'咑','D'unionall
select'妸','E'unionallselect'發','F'unionall
select'旮','G'unionallselect'鉿','H'unionall
select'丌','J'unionallselect'咔','K'unionall
select'垃','L'unionallselect'嘸','M'unionall
select'拏','N'unionallselect'噢','O'unionall
select'妑','P'unionallselect'七','Q'unionall
select'呥','R'unionallselect'仨','S'unionall
select'他','T'unionallselect'屲','W'unionall
select'夕','X'unionallselect'丫','Y'unionall
select'帀','Z'
select@strlen=len(@str),@re=''
while@strlen>0
begin
selecttop1@re=letter+@re,@strlen=@strlen-1
from@tawherechr<=substring(@str,@strlen,1)
orderbychrdesc
if@@rowcount=0
select@re=substring(@str,@strlen,1)+@re,@strlen=@strlen-1
end
return(@re)
end


---查詢---
select
*
from
[pactinfo]
where
left(dbo.f_GetPy(pactname),1)='Z'

---結果---
IDpactname
-------------------
1正常
2中國
3做飯

(所影響的行數為3行)

Ⅳ sqlserver快速查找所有存儲過程中是否包含某字元

右鍵單擊資料庫名--任務--生成腳本--選擇特定資料庫對象--選擇「存儲過程」--下一步--保存到新建查詢窗口

這樣你就得到了所有存儲過程的文本,在文本中查詢ctrl+F

Ⅵ sqlserver 只知道欄位名的一部分,如何查詢

select * from 表 where 列0 = 『%A%』 and 列1 = 『%B%』 查詢表中列0包含字母A,且列1包含字母B的記錄。如果查以字母A開頭的,去掉A前的%,查字母A結尾的,去掉A後的%。

Ⅶ SQLserver中字元串查找功能patindex和charindex的區別

CHARINDEX 和 PATINDEX 函數都返回指定模式的開始位置,PATINDEX 可使用通配符,而 CHARINDEX 不可以
使用字元串查找功能包括
1、全匹配查找字元串
2、模糊查找字元串

CHARINDEX 和 PATINDEX 函數都返回指定模式的開始位置。PATINDEX 可使用通配符,而 CHARINDEX 不可以。
這兩個函數都帶有2個參數:
1 希望獲取其位置的模式。使用 PATINDEX,模式是可以包含通配符的字面字元串。使用 CHARINDEX,模式是字面字元串(不能包含通配符)。
2 字元串值表達式(通常為列名)。
例如,查找模式"wonderful"在 titles 表中 notes 列的某一特定行中的開始位置。
USE pubs
SELECT CHARINDEX('wonderful', notes)
FROM titles
WHERE title_id = 'TC3218'

例如,使用通配符查找模式"candies"在 Categories 表中的 Description 列的任一行中的開始位置:
USE Northwind
GO
SELECT CategoryID, PATINDEX('%candies%', Description)AS POSITION
FROM Categories
WHERE PATINDEX('%candies%', Description) <> 0

如果上面仍然沒看懂的,可以繼續往下看:

一、[SQL] patindex 詳解 [Z]
PATINDEX
返回指定表達式中某模式第一次出現的起始位置;如果在全部有效的文本和字元數據類型中沒有找到該模式,則返回零。
語法
PATINDEX ( "%pattern%" , e-xpression )
參數
pattern
一個字元串。可以使用通配符,但 pattern 之前和之後必須有 % 字元(搜索第一個和最後一個字元時除外)。pattern 是短字元數據類型類別的表達式。
e-xpression
一個表達式,通常為要在其中搜索指定模式的列,e-xpression 為字元串數據類型類別。
返回類型
int
注釋
PATINDEX 對 text 數據類型很有用;除 IS NULL、IS NOT NULL 和 LIKE(這些是 Where 子句中對 text 類型有效的僅有的其它比較運算)外,PATINDEX 也可用於 Where 子句中。

PATINDEX與CHARINDEX
PATINDEX函數支持使用通配符,可以用在很多有變化的查找中。而CHARINDEX不可以。根據不同的情況,這兩個函數在SQL Server中的字元串的搜索、控制、分析很有幫助。

二、SQL Server CHARINDEX和PATINDEX詳解
假如寫過很多程序,可能偶爾會碰到要確定字元或字元竄串否包含在一段文字中。兩個函數是如何運轉的,解釋他們的區別。
CHARINDEX和PATINDEX函數常常用來在一段字元中搜索字元或者字元串。如果被搜索的字元中包含有要搜索的字元,那麼這兩個函數返回一個非零的整數,這個整數是要搜索的字元在被搜索的字元中的開始位數。PATINDEX函數支持使用通配符來進行搜索,然而CHARINDEX不支持通佩符。

如何使用CHARINDEX函數
CHARINDEX函數返回字元或者字元串在另一個字元串中的起始位置。CHARINDEX函數調用方法如下: CHARINDEX ( expression1 , expression2 [ , start_location ] )
Expression1是要到expression2中尋找的字元中,start_location是CHARINDEX函數開始在expression2中找expression1的位置。
CHARINDEX函數返回一個整數,返回的整數是要找的字元串在被找的字元串中的位置。假如CHARINDEX沒有找到要找的字元串,那麼函數整數「0」。看看下面的函數命令執行的結果: CHARINDEX("SQL", "Microsoft SQL Server")
這個函數命令將返回在「Microsoft SQL Server」中「SQL」的起始位置,在這個例子中,CHARINDEX函數將返回「S」在「Microsoft SQL Server」中的位置11。
看這個CHARINDEX命令: CHARINDEX("7.0", "Microsoft SQL Server 2000")
在這個例子中,CHARINDEX返回零,因為字元串「7.0」 不能在「Microsoft SQL Server」中被找到。接下來通過兩個例子來看看如何使用CHARINDEX函數來解決實際的T-SQL問題。
第一個例子,假設要顯示Northwind資料庫Customer表前5行聯系人列的Last Name。這是前5行數據
ContactName
------------------------------
Maria Anders
Ana Trujillo
Antonio Moreno
Thomas Hardy
Christina Berglund

可以看到,CustomName包含客戶的First Name和Last Name,之間被一個空格隔開。用CHARINDX函數確定兩個名字中間空格的位置。通過這個方法,可以分析ContactName列的空格位 置,這樣可以只顯示這個列的last name部分。這是顯示Northwind的Customer表前5行last name的記錄!

select top 5 substring(ContactName,charindex(" ",ContactName)+1 ,
len(ContactName)) as [Last Name] from Northwind.dbo.customers

下面是這個命令輸出的結果。
Last Name
------------------------------
Anders
Trujillo
Moreno
Hardy
Berglund

CHARINDEX函數找到First Name和Last Name之間的空格,所以SUBSTRING函數可以分開ContactName列,這樣就只有Last Name被選出。在CHARINDEX函數返回的整數上加1,這樣Last Name不是從空格開始。

在第二個例子中,即如說你要計算記錄中,某一個欄位包含特定字元的所有記錄數。CHARINDEX函數可以方便的解決問題。計算 Northwind.dbo.Customer表中Addresses欄位中包含單詞Road或者它的縮寫Rd的記錄數,選擇語句類似這樣:

SELECT count(*) from Northwind.dbo.Customers
WHERE CHARINDEX("Rd",Address) > 0 or CHARINDEX("Road",Address)> 1

如何使用PATINDEX函數
PATINDEX函數返回字元或者字元串在另一個字元串或者表達式中的起始位置,PATINDEX函數支持搜索字元串中使用通配符,這使PATINDEX函數對於變化的搜索字元串很有價值。PATINDEX函數的命令如下:

PATINDEX ( "%pattern%" , expression )

Pattern是你要搜索的字元串,expression是被搜索的字元串。一般情況下expression是一個表中的一個欄位,pattern的前後需要用「%」標記,除非搜索的字元串在被收縮的字元串的最前面或者最後面。
和CHARINDEX函數一樣,PATINDEX函數返回搜索字元串在被搜索字元串中的起始位置。假如有這樣一個PATINDEX函數:

PATINDEX("%BC%","ABCD")

這個PATINDEX函數返回的結果是2,這和CHARINDEX函數一樣。這里的%標記告訴PATINDEX函數去找字元串「BC」,不管被搜索的字元串中在「BC」的前後有多少字元!
假如你想知道被搜索字元串是否由特定的字元串開始,可以省去前面的%標記。PATINDED函數就要這樣寫:

PATINDEX("AB%","ABCD")

這個命令執行的結果返回1,表示搜索的字元串「AB」在被搜索的字元串中「ABCD」被找到。

使用通配符可以編輯以上舉得簡單例子復雜得多的搜索字元串。假如說要確定一個字元串是否包含字母A和Z,還有任何數字,這個PARINDEX函數命令可能像這樣:

PATINDEX("%[A,Z,0-9]%[A,Z,0-9]%[A,Z,0-9]%","XYZABC123")

注意在上面這個例子中的搜索字元部分使用了很多的通陪符。察看SQL Server聯機叢書可以獲得更多關於通佩符的信息。接下來,用兩個例子來看PATINDEX和SELECT怎麼聯合起來使用。
假設想要找出Northwind.dbo.Categories表中Description欄位中是包含單詞「Bread」或「bread」的所有記錄,那麼選擇語句就可能是這樣:

SELECT Description from Northwind.dbo.Categories
WHERE patindex("%[b,B]read%",description) > 0

這里用通配符來確定大寫和小寫的「b」。在Notthwind資料庫中執行這個腳本後,得到下面的結果:
Description
--------------------------------------------------------
Desserts, candies, and sweet breads
Breads, crackers, pasta, and cereal

這是再用另外一個額外的通配符來查找一些記錄的例子。這個例子是如何選出上面的查詢結果中,Description欄位的第二子字母不是「e」的紀錄。

select Description from Northwind.dbo.Categories
where patindex("%[b,B]read%",description) > 0
and patindex("_[^e]%",description) = 1

通過在條件語句中增加一個使用^通配符的PATINDEX函數,可以過濾掉「Dessert, candies, and sweet breads」這條記錄。上面的查詢結果只有一條記錄。
Description
--------------------------------------------------------
Breads, crackers, pasta, and cereal

總結
現在可以發現CHARINDEX和PATINDEX搜索字元串時的區別了吧。PATINDEX函數支持使用通配符,可以用在很多有變化的查找中。而 CHARINDEX不可以。根據不同的情況,這兩個函數在SQL Server中的字元串的搜索、控制、分析很有幫助。

Ⅷ sql 模糊查找

SQL模糊查詢,使用like比較字,加上SQL里的通配符,請參考以下:
1、LIKE'Mc%'
將搜索以字母
Mc
開頭的所有字元串(如
McBadden)。
2、LIKE'%inger'
將搜索以字母
inger
結尾的所有字元串(如
Ringer、Stringer)。
3、LIKE'%en%'
將搜索在任何位置包含字母
en
的所有字元串(如
Bennet、Green、McBadden)。
4、LIKE'_heryl'
將搜索以字母
heryl
結尾的所有六個字母的名稱(如
Cheryl、Sheryl)。
5、LIKE'[CK]ars[eo]n'
將搜索下列字元串:Carsen、Karsen、Carson

Karson(如
Carson)。
6、LIKE'[M-Z]inger'
將搜索以字元串
inger
結尾、以從
M

Z
的任何單個字母開頭的所有名稱(如
Ringer)。
7、LIKE'M[^c]%'
將搜索以字母
M
開頭,並且第二個字母不是
c
的所有名稱(如MacFeather)。
-------------------------------------------------
呵呵,要完整的例句啊。下面這句查詢字元串是我以前寫的,根據變數
zipcode_key
在郵政編碼表
zipcode
中查詢對應的數據,這句是判斷變數
zipcode_key
為非數字時的查詢語句,用
%
來匹配任意長度的字元串,從表中地址、市、省三列中查詢包含關鍵字的所有數據項,並按省、市、地址排序。這個例子比較簡單,只要你理解了方法就可以寫出更復雜的查詢語句。
sql
=
"select
*
from
zipcode
where
(address
like'%"
&
zipcode_key
&
"%')
or
(city
like'%"
&
zipcode_key
&
"%')
or
(province
like'%"
&
zipcode_key
&
"%')
order
by
province,city,address"

Ⅸ Sqlserver查詢的時候是否區分大小寫的問題

關於sql中查詢的時候是否區分大小寫的問題
CI指定不區分大小寫,CS指定區分大小寫
AI指定不區分重音,AS指定區分重音
Pref
指定大寫字母優先
Omitted指定不區分全半形,WS指定區分全半形
如果綁定到架構的對象依賴於資料庫排序規則,則無法更改資料庫排序規則。請刪除資料庫排序規則的依賴項,然後重試操作
alter
database
MySchool
COLLATE
Chinese_PRC_CS_AS
--可以針對某個表使用區分大小寫的查詢
Select
*
From
[Users]
Where
uLoginName='ADMIN'
collate
Chinese_PRC_CS_AI_WS--在資料庫屬性-->選項中可以設置資料庫排序規則--查詢當前可用的排序規則

Ⅹ sql如何查詢列中存在同一字母的全部記錄

不知道你什麼庫
下面是sqlserver語法。
select *
from 表
where charindex('T',欄位) > 0