當前位置:首頁 » 編程語言 » sql字元串表達式
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql字元串表達式

發布時間: 2022-04-20 06:22:22

sql正則表達式常用符號

SQL的查詢語句中,有時會需要引進正則表達式為其復雜搜索指定模式。下面給出一些Regexp在
MYSQL語句中應用(非全部):
1) ^
匹配字元串的開始部分。
mysql> SELECT 'fo\nfo' REGEXP '^fo$'; -> 0mysql> SELECT 'fofo' REGEXP '^fo'; -> 12) $
匹配字元串的結束部分。
mysql> SELECT 'fo\no' REGEXP '^fo\no$'; -> 1mysql> SELECT 'fo\no' REGEXP '^fo$'; -> 03) .
匹配任何字元(包括回車和新行)。
mysql> SELECT 'fofo' REGEXP '^f.*$'; -> 1mysql> SELECT 'fo\r\nfo' REGEXP '^f.*$'; -> 14)
[:character_class:]
在括弧表達式中(使用[和]),[:character_class:]表示與術語類的所有字元匹配的字元類。標準的類名稱是:
alnum
文字數字字元
alpha
文字字元
blank
空白字元
cntrl
控制字元
digit
數字字元
graph
圖形字元
lower
小寫文字字元
print
圖形或空格字元
punct
標點字元
space
空格、製表符、新行、和回車
upper
大寫文字字元
xdigit
十六進制數字字元
它們代表在ctype(3)手冊頁面中定義的字元類。特定地區可能會提供其他類名。字元類不得用作范圍的端點。
mysql> SELECT 'justalnums' REGEXP '[[:alnum:]]+'; -> 1
mysql> SELECT '!!' REGEXP '[[:alnum:]]+'; -> 0
5) [[:<:]], [[:>:]]
這些標記表示word邊界。它們分別與word的開始和結束匹配。word是一系列字字元,其前面和後面均沒有字
字元。字字元是alnum類中的字母數字字元或下劃線(_)。
mysql> SELECT 'a word a' REGEXP '[[:<:]]word[[:>:]]'; -> 1mysql> SELECT 'a xword a' REGEXP
'[[:<:]]word[[:>:]]'; -> 0要想在正則表達式中使用特殊字元的文字實例,應在其前面加上2個反斜杠「\」字元。
MySQL解析程序負責解釋其中一個,正則表達式庫負責解釋另一個。例如,要想與包含特殊字元「+」的字元
串「1+2」匹配,在下面的正則表達式中,只有最後一個是正確的:
mysql> SELECT '1+2' REGEXP '1+2'; -> 0mysql> SELECT '1+2' REGEXP '1\+2'; -> 0mysql> SELECT
'1+2' REGEXP '1\\+2'; -> 1 其他的有關Regexp的語法,可直接參考下表:字元 含意
\ 做為轉意,即通常在"\"後面的字元不按原來意義解釋,如/b/匹配字元"b",當b前面加了反斜桿後/\b/,轉意
為匹配一個單詞的邊界。
-或-
對正則表達式功能字元的還原,如"*"匹配它前面元字元0次或多次,/a*/將匹配a,aa,aaa,加了"\"後,/a\*/將
只匹配"a*"。
^ 匹配一個輸入或一行的開頭,/^a/匹配"an A",而不匹配"An a"
$ 匹配一個輸入或一行的結尾,/a$/匹配"An a",而不匹配"an A"
* 匹配前面元字元0次或多次,/ba*/將匹配b,ba,baa,baaa
+ 匹配前面元字元1次或多次,/ba*/將匹配ba,baa,baaa
? 匹配前面元字元0次或1次,/ba*/將匹配b,ba
(x) 匹配x保存x在名為$1...$9的變數中
x|y 匹配x或y
{n} 精確匹配n次
{n,} 匹配n次以上
{n,m} 匹配n-m次
[xyz] 字元集(character set),匹配這個集合中的任一一個字元(或元字元)
[^xyz] 不匹配這個集合中的任何一個字元
[\b] 匹配一個退格符
\b 匹配一個單詞的邊界
\B 匹配一個單詞的非邊界
\cX 這兒,X是一個控制符,/\cM/匹配Ctrl-M
\d 匹配一個字數字元,/\d/ = /[0-9]/
\D 匹配一個非字數字元,/\D/ = /[^0-9]/
\n 匹配一個換行符
\r 匹配一個回車符
\s 匹配一個空白字元,包括\n,\r,\f,\t,\v等
\S 匹配一個非空白字元,等於/[^\n\f\r\t\v]/
\t 匹配一個製表符
\v 匹配一個重直製表符
\w 匹配一個可以組成單詞的字元(alphanumeric,這是我的意譯,含數字),包括下劃線,如[\w]匹配
"$5.98"中的5,等於[a-zA-Z0-9]
\W 匹配一個不可以組成單詞的字元,如[\W]匹配"$5.98"中的$,等於[^a-zA-Z0-9]。

㈡ sql server 字元串算術表達式求值

1.DATEADD
在向指定日期加上一段時間的基礎上,返回新的 datetime 值。
語法
DATEADD ( datepart , number, date )
參數
datepart
是規定應向日期的哪一部分返回新值的參數。下表列出了 Microsoft? SQL Server? 識別的日期部分和縮
寫。
日期部分 縮寫
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms

number
是用來增加 datepart 的值。如果指定一個不是整數的值,則將廢棄此值的小數部分。例如,如果為
datepart 指定 day,為 number 指定 1.75,則 date 將增加 1。
date
是返回 datetime 或 smalldatetime 值或日期格式字元串的表達式。有關指定日期的更多信息,請參見
datetime 和 smalldatetime。
如果您只指定年份的最後兩位數字,則小於或等於"兩位數年份截止期"配置選項的值的最後兩位數字的數字所
在世紀與截止年所在世紀相同。大於該選項的值的最後兩位數字的數字所在世紀為截止年所在世紀的前一個世
紀。例如,如果 two digit year cutoff 為 2049(默認),則 49 被解釋為 2049,2050 被解釋為
1950。為避免模糊,請使用四位數的年份。
返回類型
返回 datetime,但如果 date 參數是 smalldatetime,返回 smalldatetime。
示例
此示例列印出 pubs 資料庫中標題的時間結構的列表。此時間結構表示當前發布日期加上 21 天。
USE pubs
GO
SELECT DATEADD(day, 21, pubdate) AS timeframe
FROM titles
GO

㈢ sql 處理字元串的函數有哪些

1.絕對值
SQL:select abs(-1) value
O:select abs(-1) value from al
2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from al
3.取整(小)
S:select floor(-1.001) value
O:select floor(-1.001) value from al
4.取整(截取)
S:select cast(-1.002 as int) value
O:select trunc(-1.002) value from al
5.四捨五入
S:select round(1.23456,4) value 1.23460
O:select round(1.23456,4) value from al 1.2346
6.e為底的冪
S:select Exp(1) value 2.7182818284590451
O:select Exp(1) value from al 2.71828182
7.取e為底的對數
S:select log(2.7182818284590451) value 1
O:select ln(2.7182818284590451) value from al; 1
8.取10為底對數
S:select log10(10) value 1
O:select log(10,10) value from al; 1
9.取平方
S:select SQUARE(4) value 16
O:select power(4,2) value from al 16
10.取平方根
S:select SQRT(4) value 2
O:select SQRT(4) value from al 2
11.求任意數為底的冪
S:select power(3,4) value 81
O:select power(3,4) value from al 81
12.取隨機數
S:select rand() value
O:select sys.dbms_random.value(0,1) value from al;
13.取符號
S:select sign(-8) value -1
O:select sign(-8) value from al -1
----------數學函數
14.圓周率
S:SELECT PI() value 3.1415926535897931
O:不知道
15.sin,cos,tan 參數都以弧度為單位
例如:select sin(PI()/2) value 得到1(SQLServer)
16.Asin,Acos,Atan,Atan2 返回弧度
17.弧度角度互換(SQLServer,Oracle不知道)
DEGREES:弧度-〉角度
RADIANS:角度-〉弧度
---------數值間比較
18. 求集合最大值
S:select max(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a
O:select greatest(1,-2,4,3) value from al
19. 求集合最小值
S:select min(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a
O:select least(1,-2,4,3) value from al
20.如何處理null值(F2中的null以10代替)
S:select F1,IsNull(F2,10) value from Tbl
O:select F1,nvl(F2,10) value from Tbl
--------數值間比較
21.求字元序號
S:select ascii('a') value
O:select ascii('a') value from al
22.從序號求字元
S:select char(97) value
O:select chr(97) value from al
23.連接
S:select '11'+'22'+'33' value
O:select CONCAT('11','22')||33 value from al
23.子串位置 --返回3
S:select CHARINDEX('s','sdsq',2) value
O:select INSTR('sdsq','s',2) value from al
23.模糊子串的位置 --返回2,參數去掉中間%則返回7
S:select patindex('%d%q%','sdsfasdqe') value
O:oracle沒發現,但是instr可以通過第四霾問 刂瞥魷執問?BR> select INSTR('sdsfasdqe','sd',1,2) value from al 返回6
24.求子串
S:select substring('abcd',2,2) value
O:select substr('abcd',2,2) value from al
25.子串代替 返回aijklmnef
S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value
O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from al
26.子串全部替換
S:沒發現
O:select Translate('fasdbfasegas','fa','我' ) value from al
27.長度
S:len,datalength
O:length
28.大小寫轉換 lower,upper
29.單詞首字母大寫
S:沒發現
O:select INITCAP('abcd dsaf df') value from al
30.左補空格(LPAD的第一個參數為空格則同space函數)
S:select space(10)+'abcd' value
O:select LPAD('abcd',14) value from al
31.右補空格(RPAD的第一個參數為空格則同space函數)
S:select 'abcd'+space(10) value
O:select RPAD('abcd',14) value from al
32.刪除空格
S:ltrim,rtrim
O:ltrim,rtrim,trim
33. 重復字元串
S:select REPLICATE('abcd',2) value
O:沒發現
34.發音相似性比較(這兩個單詞返回值一樣,發音相同)
S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')
O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from al
SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比較soundex的差
返回0-4,4為同音,1最高
--------------日期函數
35.系統時間
S:select getdate() value
O:select sysdate value from al
36.前後幾日
直接與整數相加減
37.求日期
S:select convert(char(10),getdate(),20) value
O:select trunc(sysdate) value from al
select to_char(sysdate,'yyyy-mm-dd') value from al
38.求時間
S:select convert(char(8),getdate(),108) value
O:select to_char(sysdate,'hh24:mm:ss') value from al
39.取日期時間的其他部分
S:DATEPART 和 DATENAME 函數 (第一個參數決定)
O:to_char函數 第二個參數決定
參數---------------------------------下表需要補充
year yy, yyyy
quarter qq, q (季度)
month mm, m (m O無效)
dayofyear dy, y (O表星期)
day dd, d (d O無效)
week wk, ww (wk O無效)
weekday dw (O不清楚)
Hour hh,hh12,hh24 (hh12,hh24 S無效)
minute mi, n (n O無效)
second ss, s (s O無效)
millisecond ms (O無效)
----------------------------------------------
40.當月最後一天
S:不知道
O:select LAST_DAY(sysdate) value from al
41.本星期的某一天(比如星期日)
S:不知道
O:SELECT Next_day(sysdate,7) vaule FROM DUAL;
42.字元串轉時間
S:可以直接轉或者select cast('2004-09-08'as datetime) value
O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;
43.求兩日期某一部分的差(比如秒)
S:select datediff(ss,getdate(),getdate()+12.3) value
O:直接用兩個日期相減(比如d1-d2=12.3)
SELECT (d1-d2)*24*60*60 vaule FROM DUAL;
44.根據差值求新的日期(比如分鍾)
S:select dateadd(mi,8,getdate()) value
O:SELECT sysdate+8/60/24 vaule FROM DUAL;
45.求不同時區時間
S:不知道
O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;
-----時區參數,北京在東8區應該是Ydt-------
AST ADT 大西洋標准時間
BST BDT 白令海標准時間
CST CDT 中部標准時間
EST EDT 東部標准時間
GMT 格林尼治標准時間
HST HDT 阿拉斯加—夏威夷標准時間
MST MDT 山區標准時間
NST 紐芬蘭標准時間
PST PDT 太平洋標准時間
YST YDT YUKON標准時間
Oracle支持的字元函數和它們的Microsoft SQL Server等價函數:
函數 Oracle Microsoft SQL Server
把字元轉換為ASCII ASCII ASCII
字串連接 CONCAT (expression + expression)
把ASCII轉換為字元 CHR CHAR
返回字元串中的開始字元(左起) INSTR CHARINDEX
把字元轉換為小寫 LOWER LOWER
把字元轉換為大寫 UPPER UPPER
填充字元串的左邊 LPAD N/A
清除開始的空白 LTRIM LTRIM
清除尾部的空白 RTRIM RTRIM
字元串中的起始模式(pattern) INSTR PATINDEX
多次重復字元串 RPAD REPLICATE
字元串的語音表示 SOUNDEX SOUNDEX
重復空格的字串 RPAD SPACE
從數字數據轉換為字元數據 TO_CHAR STR
子串 SUBSTR SUBSTRING
替換字元 REPLACE STUFF
將字串中的每個詞首字母大寫 INITCAP N/A
翻譯字元串 TRANSLATE N/A
字元串長度 LENGTH DATELENGTH or LEN
列表中最大的字元串 GREATEST N/A
列表中最小的字元串 LEAST N/A
如果為NULL則轉換字串 NVL ISNULL

日期函數
函數 Oracle Microsoft SQL Server
日期相加 (date column +/- value) or
ADD_MONTHS DATEADD
兩個日期的差 (date column +/- value) or
MONTHS_BETWEEN DATEDIFF
當前日期和時間 SYSDATE GETDATE()
一個月的最後一天 LAST_DAY N/A
時區轉換 NEW_TIME N/A
日期後的第一個周日 NEXT_DAY N/A
代表日期的字元串 TO_CHAR DATENAME
代表日期的整數 TO_NUMBER
(TO_CHAR)) DATEPART
日期舍入 ROUND CONVERT
日期截斷 TRUNC CONVERT
字元串轉換為日期 TO_DATE CONVERT
如果為NULL則轉換日期 NVL ISNULL

轉換函數
函數 Oracle Microsoft SQL Server
數字轉換為字元 TO_CHAR CONVERT
字元轉換為數字 TO_NUMBER CONVERT
日期轉換為字元 TO_CHAR CONVERT
字元轉換為日期 TO_DATE CONVERT
16進制轉換為2進制 HEX_TO_RAW CONVERT
2進制轉換為16進制 RAW_TO_HEX CONVERT

其它行級別的函數
函數 Oracle Microsoft SQL Server
返回第一個非空表達式 DECODE COALESCE
當前序列值 CURRVAL N/A
下一個序列值 NEXTVAL N/A
如果exp1 = exp2, 返回null DECODE NULLIF
用戶登錄賬號ID數字 UID SUSER_ID
用戶登錄名 USER SUSER_NAME
用戶資料庫ID數字 UID USER_ID
用戶資料庫名 USER USER_NAME
當前用戶 CURRENT_USER CURRENT_USER
用戶環境(audit trail) USERENV N/A
在CONNECT BY子句中的級別 LEVEL N/A

合計函數
函數 Oracle Microsoft SQL Server
Average AVG AVG
Count COUNT COUNT
Maximum MAX MAX
Minimum MIN MIN
Standard deviation STDDEV STDEV or STDEVP
Summation SUM SUM
Variance VARIANCE VAR or VARP
Oracle還有一個有用的函數EXTRACT,提取並且返回日期時間或時間間隔表達式中特定的時間域:
EXTRACT(YEAR FROM 日期)

㈣ sql 實現正則表達式

沒有正則表達式LIKE

確定給定的字元串是否與指定的模式匹配。模式可以包含常規字元和通配符字元。模式匹配過程中,常規字元必須與字元串中指定的字元完全匹配。然而,可使用字元串的任意片段匹配通配符。與使用 = 和 != 字元串比較運算符相比,使用通配符可使 LIKE 運算符更加靈活。如果任何參數都不屬於字元串數據類型,Microsoft® SQL Server™ 會將其轉換成字元串數據類型(如果可能)。

語法
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

參數
match_expression 任何字元串數據類型的有效 SQL Server 表達式。
patternmatch_expression 中的搜索模式,可以包含下列有效 SQL Server 通配符

1 % 包含零個或更多字元的任意字元串
示例:WHERE title LIKE '%computer% ' 將查找處於書名任意位置的包含單詞 computer 的所有書名。

2 _(下劃線) 任何單個字元
示例:WHERE au_fname LIKE '_ean ' 將查找以 ean 結尾的所有 4 個字母的名字(Dean、Sean 等)。

3 [] 指定范圍中的任何單個字元
示例:WHERE au_lname LIKE '[C-P]arsen ' 將查找以arsen 結尾且以介於 C 與 P 之間的任何單個字元開始的 作者姓氏,例如,Carsen、Larsen、Karsen 等

4 [^] 不屬於指定范圍中的任何單個字元,與 [] 相反
示例:WHERE au_lname LIKE 'de[^l]% ' 將查找以 de 開始且其後的字母不為 l 的所有作者的姓氏。

一 使用 like 的模式匹配:
在搜索Datetime類型時,建議使用like .
LIKE 支持 ASCII 模式匹配和 Unicode 模式匹配。當所有參數,包括 match_expression、pattern 和 escape_character(如果有)都是 ASCII 字元數據類型時,將執行 ASCII 模式匹配。如果其中任何參數屬於 Unicode 數據類型,則所有參數將被轉換為 Unicode 並執行 Unicode 模式匹配。當對 Unicode 數據(nchar 或 nvarchar 數據類型)使用 LIKE 時,尾隨空格是有意義的。但是對於非 Unicode 數據,尾隨空格沒有意義。Unicode LIKE 與 SQL-92 標准兼容。ASCII LIKE 與 SQL Server 的早期版本兼容

二 使用 % 通配符

例如,此查詢將顯示資料庫中所有的系統表,因為它們都以字母 sys 開始:
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'sys% '
若要查閱非系統表的所有對象,請使用 NOT LIKE 'sys% '。如果共有 32 個對象且 LIKE 找到 13 個與模式匹配的名稱,則 NOT LIKE 將找到 19 個與 LIKE 模式不匹配的對象

三 使用escape字句的模式匹配

可搜索包含一個或多個特殊通配符的字元串。例如,customers 資料庫中的 discounts 表可能存儲含百分號 (%) 的折扣值。若要搜索作為字元而不是通配符的百分號,必須提供 ESCAPE 關鍵字和轉義符。例如,一個樣本資料庫包含名為 comment 的列,該列含文本 30%。若要搜索在 comment 列中的任何位置包含字元串 30% 的任何行,請指定由 WHERE comment LIKE '%30!%% ' ESCAPE '! ' 組成的 WHERE 子句。如果不指定 ESCAPE 和轉義符,SQL Server 將返回所有含字元串 30 的行。

下例使用 ESCAPE 子句和轉義符查找 mytbl2 表的 c1 列中的精確字元串 10-15%

USE pubs
GO
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'mytbl2 ')
DROP TABLE mytbl2
GO
USE pubs
GO
CREATE TABLE mytbl2
(
c1 sysname
)
GO
INSERT mytbl2 VALUES ( 'Discount is 10-15% off ')
INSERT mytbl2 VALUES ( 'Discount is .10-.15 off ')
GO
SELECT c1
FROM mytbl2
WHERE c1 LIKE '%10-15!% off% ' ESCAPE '! '
GO

四 使用 [] 通配符

下例查找姓為 Carson、Carsen、Karson 或 Karsen 的作者所在的行。
USE pubs
SELECT au_lname, au_fname, phone
FROM authors
WHERE au_lname LIKE '[CK]ars[eo]n '
ORDER BY au_lname ASC, au_fname ASC

㈤ SQL語句截取字元串中最後的兩個字怎麼做急用。在線等。

substr(str,length(str)-1)

用right函數截取,right('abc',1)取最後一個字元

substring(字元串表達式,開始位置,長度):

從一個指定字元串的指定位置截取制定長度的字元;

第一個參數表示被截取的字元串;

第二個參數表示要在第一個參數中開始截取的位置;

第三個參數表示要截取的長度。

(5)sql字元串表達式擴展閱讀;

SQL數據定義功能:能夠定義資料庫的三級模式結構,即外模式、全局模式和內模式結構。在SQL中,外模式又叫做視圖(View),全局模式簡稱模式( Schema),內模式由系統根據資料庫模式自動實現,一般無需用戶過問。

SQL可以獨立完成資料庫生命周期中的全部活動,包括定義關系模式、錄入數據、建立資料庫、査詢、更新、維護、資料庫重構、資料庫安全性控制等一系列操作,這就為資料庫應用系統開發提供了良好的環境,在資料庫投入運行後,還可根據需要隨時逐步修改模式,且不影響資料庫的運行,從而使系統具有良好的可擴充性。

㈥ 如何在sql語句中使用正則表達式

sqlserver中,主要有regexp_like,regexp_replace,regexp_substr,regexp_instr四個正則表達式函數。

1、regexp_like:

regexp_like(x,pattern[,match_option]),查看x是否與pattern相匹配,該函數還可以提供一個可選的參數match_option字元串說明默認的匹配選項。match_option的取值如下:

'c' 說明在進行匹配時區分大小寫(預設值);

'i' 說明在進行匹配時不區分大小寫;

'n' (.)點號能表示所有單個字元,包括換行(俺還不知道什麼地方有用到換行.只知道sql裡面可以用chr(10)表示換行、

'm' 字元串存在換行的時候當作多行處理.這樣$就可匹配每行的結尾.不然的話$只匹配字元串最後的位置、

示例:

select * from emp where regexp_like(ename,'^a[a-z]*n$');

可以查找ename中以a開頭以n結尾的行.例如ename為arwen或arwin或anden.但Arwen不能被匹配.因為默認是區分大小寫.如果是

select * from emp where regexp_like(ename,'^a[a-z]*n$','i')

則可以查找ename為Arwen的行記錄。

2、regexp_instr:

REGEXP_INSTR(x,pattern[,start[,occurrence[,return_option[, match_option]]]])用於在x中查找pattern。返回pattern在x中出現的位置。匹配位置從1開始。可以參考字元串函數 INSTR(),參數相關:

'start' 開始查找的位置;

'occurrence' 說明應該返回第幾次出現pattern的位置;

'return_option' 說明應該返回什麼整數。若該參數為0,則說明要返回的整數是x中的一個字元的位置;若該參數為非0的整數,則說明要返回的整數為x中出現在pattern之後 的字元的位置;

'match_option' 修改默認的匹配設置.與regexp_like裡面的相同.

示例:

DECLARE

V_RESULT INTEGER ;

BEGIN

SELECT REGEXP_INSTR('hello world','o',1,1,0) INTO V_RESULT

FROM DUAL;

DBMS_OUTPUT.PUT_LINE(V_RESULT);

END;

結果為5,即字母o第一個次出現的位置。

如果regexp_instr('hello world','o',1,1,n)其中n為除0之外的整數。比如1,3。則結果為6.表示第一次出現字母o的後面一個字元的位置。

如果regexp_instr('hello world','o',1,2,0)則結果為9.表示第二次出現字母o的位置.

3、regexp_replace:

REGEXP_REPLACE(x,pattern[,replace_string[,start[,occurrence[, match_option]]]])用於在x中查找pattern,並將其替換為replae_string。可以參考字元串函數 REPLACE(),參數同REGEXP_INSTR函數

示例:

DECLARE

V_RESULT varchar2(90);

BEGIN

SELECT REGEXP_REPLACE('hello world','o','x',1,1) INTO V_RESULT

FROM DUAL;

DBMS_OUTPUT.PUT_LINE(V_RESULT);

END;

結果為hellx world.

如果REGEXP_REPLACE('hello world','o','x'),則結果為hellx wxrld.

如果 REGEXP_REPLACE('hello world','o','x',1,2)則結果為hello wxrld.

4、regexp_substr:

REGEXP_SUBSTR(x,pattern[,start[,occurrence[, match_option]]])用於在x中查找pattern並返回。可以參考字元串函數 SUBSTR(),參數同REGEXP_INSTR函數.

例如:

DECLARE

V_RESULT VARCHAR2(255);

BEGIN

SELECT REGEXP_SUBSTR('hello world','l{2}') INTO V_RESULT

FROM DUAL;

DBMS_OUTPUT.PUT_LINE(V_RESULT);

END ;

結果為ll

查詢到匹配的字元串才返回匹配的字元.沒查到就返回空。

㈦ SQL中表達式

where abc.aaa is null or abc.aaa= 1 or abc.aaa=o
如果1和0是字元型的,可以用
where abc.aaa is null or abc.aaa in ('1', '0 ')

㈧ SQL語句正確的表達式

所謂操作符丟失,應該是你在拼接SQL語句是少了關鍵詞或者分隔符,導致系統無法識別SQL語句。
建議:
1、監控SQL語句,看看哪裡出現問題;斷點看下最後的sql到底是什麼樣子就知道了,另外你可以把這段sql放在查詢分析器下面讓他幫你檢查下語法。
2、有條件的話,將監控的值放到MS-SQLserver中執行以下,錯誤就知道在哪裡了。
3、可以的話不要用這種拼接方式,很容易出錯而且不好調試。建議使用SQL自帶的parma來添加參數
4、由於這種拼接方式是將所有欄位作為字元串處理,因此遇到日期型和數值型的數據的時候會很麻煩,尤其是日期型數據。
特別是使用「+」、「&」等拼接的語句看起來麻煩,用於網路還可能被注入攻擊。
查詢的是Excel中的Sheet1中表格的內容
me.txtpre1.text至me.txtpre1.text為文本內容,me.txtsum1.text至me.txtsum5.text為數值
查詢時提示:sql語法錯誤(操作符丟失)
Dim strExcelSelect As String = "SELECT 料號,**,**,*** , ***,[***],[**(pcs)],[**(cm)],[**(cm)],[**(cm)],[**(kg)] FROM [Sheet1$] where 料號 in ('" + Me.txtpre1.Text + "','" + Me.txtpre2.Text + "','" + Me.txtpre3.Text + "','" + Me.txtpre4.Text + "','" + Me.txtpre5.Text + "') And 數量 in (" + Me.txtsum1.Text + "," + Me.txtsum2.Text + "," + Me.txtsum3.Text + "," + Me.txtsum4.Text + "," + Me.txtsum5.Text + ")"

字元串的查詢語句不是打括弧,而是打單引號。
應該改成:"dept_id='"& deptids & "'"

㈨ sql語句中的字元串連接

那要看你使用的是什麼樣的SQL系統,如果使用的是標準的SQL,一般可以這樣寫:
update
char
set
name=concat(name,"abc")
where
id=1;
這里要注意的是:concat是標準的字元串連接函數,你要保證你name屬性的數據類型是字元串型的,還有,根據你使用的系統,決定引用字元串時是使用單引號還是雙引號;如果你使用的系統是MySQL,MSSQL或者其他的SQL,一般還有對應的更加簡潔的表達式。
還有,在有的SQL系統里,你上面的表達式是可以使用的,只需把單引號換雙引號即可。
答案補充
你用我給你些的標准SQL的代碼,絕對沒有錯,我剛才PHPMYADMIN上執行了的,沒有問題。如果你不信的話我可以發圖。