本文目錄一覽:
- 1、MySQL中的字元串比較
- 2、在SQL中怎樣實現字元串大小的比較
- 3、JSP-Servlet中如何與資料庫中的字元串比較?跪求!代碼如下
- 4、SQL資料庫中字元串與char數據類型的比較
- 5、mysql兩個數字型字元串比較!詳細如下
- 6、如何在SQL資料庫中截取字元串並且比較。
MySQL中的字元串比較
你這兩個都不是字元串的比較函數呀。
MYSQL的字元串比較函數如下:
通常,如果在字元串比較中的任何表達式是區分大小寫的,比較以大小寫敏感的方式執行。
expr LIKE pat [ESCAPE ‘escape-char’]
使用SQL的簡單的正規表達式比較的模式匹配。返回1(TRUE)或0(FALSE)。用LIKE,你可以在模式中使用下列2個通配符字元: % 匹配任何數目的字元,甚至零個字元
_ 精確匹配一個字元
mysql select ‘David!’ LIKE ‘David_’;
– 1
mysql select ‘David!’ LIKE ‘%D%v%’;
– 1
為了測試一個通配符的文字實例,用轉義字元的加在字元前面。如果你不指定ESCAPE字元,假定為「\」:
\% 匹配一%字元
\_ 匹配一_字元
mysql select ‘David!’ LIKE ‘David\_’;
– 0
mysql select ‘David_’ LIKE ‘David\_’;
– 1
為了指定一個不同的轉義字元,使用ESCAPE子句:
mysql select ‘David_’ LIKE ‘David|_’ ESCAPE ‘|’;
– 1
LIKE允許用在數字的表達式上!(這是MySQL對ANSI SQL LIKE的一個擴充。)
mysql select 10 LIKE ‘1%’;
– 1
注意:因為MySQL在字元串中使用C轉義語法(例如,「\n」),你必須在你的LIKE字元串中重複任何「\」。例如,為了查找「\n」,指定它為「 \\n」,為了查找「\」,指定它為「\\\\」(反斜線被分析器剝去一次,另一次是在模式匹配完成時,留下一條單獨的反斜線被匹配)。
expr NOT LIKE pat [ESCAPE ‘escape-char’]
與NOT (expr LIKE pat [ESCAPE ‘escape-char’])相同。
expr REGEXP pat
expr RLIKE pat
執行一個字元串表達式expr對一個模式pat的模式匹配。模式可以是一個擴充的正則表達式。見MySQL 正則表達式句法的 H 描述.如果expr匹配pat,返回1,否則返回0。RLIKE是REGEXP的一個同義詞,提供了與mSQL的兼容性。注意:因為MySQL在字元串中使用C轉義語法(例如,「\n」), 你必須在你的REGEXP字元串重複任何「\」。在MySQL3.23.4中,REGEXP對於正常的(不是二進位)字元串是忽略大小寫。
mysql select ‘Monty!’ REGEXP ‘m%y%%’;
– 0
mysql select ‘Monty!’ REGEXP ‘.*’;
– 1
mysql select ‘new*\n*line’ REGEXP ‘new\\*.\\*line’;
– 1
mysql select “a” REGEXP “A”, “a” REGEXP BINARY “A”;
– 1 0
當決定一個字元的類型時,REGEXP和RLIKE使用當前的字符集(預設為ISO-8859-1 Latin1)。
expr NOT REGEXP pat
expr NOT RLIKE pat
與NOT (expr REGEXP pat)相同。
STRCMP(expr1,expr2)
如果字元串相同,STRCMP()回來0,如果第一參數根據當前的排序次序小於第二個,返回-1,否則返回1。
mysql select STRCMP(‘text’, ‘text2’);
– -1
mysql select STRCMP(‘text2’, ‘text’);
– 1
mysql select STRCMP(‘text’, ‘text’);
– 0
在SQL中怎樣實現字元串大小的比較
sql裡面字元串沒有大小之分,只有長度之分,可以比較長度大小,但是想用一條sql語句直接拿到大小結果來說也不太方便,最好是藉助程序或者sql腳本來做,我用oracle試了下,用case when函數是可以直接比較大小的,比如第一個值比第二個大輸出0,否則輸出1:
select (case when len1len2 then 0 when len1len2 then 1 end) as res from (
select length(‘asd’) as len1,length(‘as’) as len2 from dual) t
JSP-Servlet中如何與資料庫中的字元串比較?跪求!代碼如下
// —————判斷登陸用戶名密碼是否正確————//
public boolean loginSuccess(User user) {
boolean flag = false;
String countSql = ” select count(*) from users where USER_NAME ='”
+ user.getUserName() + “‘ AND USER_PASSWORD='”
+ user.getUserPassword() + “‘”;
int row = 0;
try {
st = con.createStatement();
rs = st.executeQuery(countSql);
while (rs.next()) {
row = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
if (row 0) {
flag = true;
}
return flag;
}
看看。
勸你不要把JAVA代碼寫在JSP頁面上。。把表現層與業務層分開最好。
SQL資料庫中字元串與char數據類型的比較
別聽別人瞎說,這就是varchar和char的區別當定義了char的長度後如果長度不夠則會自動用空字元補全,而varchar則沒事如果是18位的你查詢的時候用你的18位加一個空格就能查出來了,不過一般用char類型的,長度都是固定的,畢竟補全空格比較麻煩,所以數據類型要謹慎使用
mysql兩個數字型字元串比較!詳細如下
我的答案是純手打的,請認真看,不要浪費我的表情哦~
如果以字元串存儲,格式就是 年月日(20120101等於2012-01-01)的話
首先把 日期字元串 轉換成 合格的日期
concat_ws(連接符號,字元串1,字元串2…)
第一步代碼:
SELECT
CONCAT_WS(‘-‘,
SUBSTRING(‘20120101’,1,4),
SUBSTRING(‘20120101’,5,2),
SUBSTRING(‘20120101’,7,2) ) AS 開始日期 ,
CONCAT_WS(‘-‘,
SUBSTRING(‘20120608’,1,4),
SUBSTRING(‘20120608’,5,2),
SUBSTRING(‘20120608’,7,2) ) AS 結束日期 ;
————————————————————
第二步,將日期使用日期運算函數進行相減:
TIMESTAMPDIFF(返回結果,日期1,日期2)
最終代碼:
SELECT
CONCAT_WS(‘-‘,
SUBSTRING(‘20120101’,1,4),
SUBSTRING(‘20120101’,5,2),
SUBSTRING(‘20120101’,7,2) ) AS 開始日期 ,
CONCAT_WS(‘-‘,
SUBSTRING(‘20120608’,1,4),
SUBSTRING(‘20120608’,5,2),
SUBSTRING(‘20120608’,7,2) ) AS 結束日期 ,
TIMESTAMPDIFF(
DAY,
CONCAT_WS(‘-‘,
SUBSTRING(‘20120101’,1,4),
SUBSTRING(‘20120101’,5,2),
SUBSTRING(‘20120101’,7,2) ) ,
CONCAT_WS(‘-‘,
SUBSTRING(‘20120608’,1,4),
SUBSTRING(‘20120608’,5,2),
SUBSTRING(‘20120608’,7,2) )
) AS 相差天數
;
————————————————————————————-
不好意思,看錯題目,我以為你是要運算。如果是比較,就先把日期轉換為時間戳進行比較是這樣:
unix_timestamp(日期)
SELECT
unix_timestamp(
CONCAT_WS(‘-‘,
SUBSTRING(‘20120101’,1,4),
SUBSTRING(‘20120101’,5,2),
SUBSTRING(‘20120101’,7,2) )
) AS 開始日期,
unix_timestamp(
CONCAT_WS(‘-‘,
SUBSTRING(‘20120608’,1,4),
SUBSTRING(‘20120608’,5,2),
SUBSTRING(‘20120608’,7,2) )
) AS 開始結束;
————————————————————————–
直接判斷即可
新建一個資料庫來驗證:
CREATE DATABASE test5_4_17
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE UTF8_BIN;
#新建一個test_4_17 使用utf8字元串
USE test5_4_17;
#打開資料庫
CREATE TABLE test(
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
date_v VARCHAR(30) NOT NULL
);
INSERT INTO test VALUES(NULL,’20110303′);
INSERT INTO test VALUES(NULL,’20120303′);
INSERT INTO test VALUES(NULL,’20120304′);
INSERT INTO test VALUES(NULL,’20130303′);
SELECT * FROM test; #查看數據有了
SELECT * FROM
test
WHERE
UNIX_TIMESTAMP(date_v) =
unix_timestamp(
CONCAT_WS(‘-‘,
SUBSTRING(‘20120101’,1,4),
SUBSTRING(‘20120101’,5,2),
SUBSTRING(‘20120101’,7,2) )
)
AND
UNIX_TIMESTAMP(date_v) =
unix_timestamp(
CONCAT_WS(‘-‘,
SUBSTRING(‘20120608’,1,4),
SUBSTRING(‘20120608’,5,2),
SUBSTRING(‘20120608’,7,2) )
)
結果是
20120303
20120304
—————————————————————————————–
參數中的 日期字元串 可以換成 欄位名
如何在SQL資料庫中截取字元串並且比較。
CREATE TABLE #商品信息(
CODE VARCHAR(8),
NAME VARCHAR(8)
);
CREATE TABLE #商品瀏覽記錄(
CODE VARCHAR(8),
NAME VARCHAR(8)
);
INSERT INTO #商品信息
SELECT ‘00010001’, ‘可樂’ UNION ALL
SELECT ‘00010002’, ‘汽水’ UNION ALL
SELECT ‘00010003’, ‘啤酒’ UNION ALL
SELECT ‘00020001’, ‘牙刷’ UNION ALL
SELECT ‘00020002’, ‘毛巾’ UNION ALL
SELECT ‘00030001’, ‘內存’ UNION ALL
SELECT ‘00030002’, ‘CPU’
GO
INSERT INTO #商品瀏覽記錄
SELECT ‘00010003’, ‘啤酒’ UNION ALL
SELECT ‘00030002’, ‘CPU’
GO
SELECT
g.*
FROM
#商品信息 g
JOIN
(SELECT DISTINCT SUBSTRING(CODE, 1, 4) FROM #商品瀏覽記錄) v
ON (g.CODE LIKE v.CODE + ‘%’)
CODE NAME
——– ——–
00010001 可樂
00010002 汽水
00010003 啤酒
00030001 內存
00030002 CPU
(5 行受影響)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/198401.html