❶ 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語句正確的表達式
所謂操作符丟失,應該是你在拼接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中表達式
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表達式怎麼寫
select * from tb(表名) where HB>1500 and PX>2 and TRHD>40
❺ sql語句中可以寫表達式嗎
你這樣肯定不行啊,要麼改成在程序里實現time的自增(程序里,循環啊之類的),要麼改成存儲過程的方式實現,寫TSQL
❻ SQL語句中條件為日期時間型的查詢表達式怎麼寫
1.直接用字元串可自動轉換為datetime;
2.先轉換為Datetime再與欄位比較。
不知道易語言中字元串連接用什麼符號,如果是加號,這么寫:
臨時記錄集.打開 ("select 日記標題 from 日記表 where 日記日期= #" + 日記日期1 +"# ", #SQL語句)
❼ sql server中:表達式怎麼實現
形如:
select case when T1.最終更新日 >= T2.最終更新日 then T1.最終更新者 else T2.最終更新者 end