本文目錄一覽:
- 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-hant/n/198401.html