回答

收藏

Mysql中区分大小写使用select where Query

技术问答 技术问答 250 人阅读 | 0 人回复 | 2023-09-14

嗨,我使用的是Java前端和Mysql后端,
- }3 A. t  x$ _& C$ R其实在 tbl_test中 包含
0 _& Z1 _/ i& i5 I% M2 \name value  l9 D" c# E7 N9 O& Z! E
---------------4 @* U; J& [; |  e$ J
abc   22   
3 E$ @6 I# W8 T3 f* ~: T xyz   14   
+ F% V. p* N" A: t ABC   32   8 E. \2 w0 j( m8 I5 |
xyZ    4   : E2 k* u, V$ f& r
ABc    4- R- ^$ J$ p. p8 o( a
在Java中,我尝试检索 abc的值, 因此编写了代码, m; X7 x# n+ H* j' R
ResultSet result=stmt.executeQuery("select value from tbl_test where name='abc'");
5 C) U( c/ ?7 _6 |4 c- ^+ Dwhile(result.next())  x; G/ T! U( V6 ^8 G$ |+ F# x
{
$ a. s) x1 V( R     System.out.println("Answer : "+result.getInt(1));: i7 n# X; s6 `0 z* g+ X
}; D; s* ]& U& y8 r; o% B
result.close();
1 u; n; d7 b. ]* D" U# L当前输出为
4 T: h" p7 ~/ H- q. ]  ?Answer :  220 f6 ?1 G' ]# w$ p$ H' o: O/ ]
Answer :  32; \9 p' g1 S$ F+ N7 ^7 {! G9 |
Answer :  40 {% S( a4 ~- t  P- l
实际上我只希望结果为“ abc”,即 答案:22
: \9 b+ o3 `5 \- k我也找到了结果,下面的代码
, Q4 L' {1 g: l0 J/ L) v0 TString name="abc";
1 E' {& z* p2 uResultSet result=stmt.executeQuery("select name, value from tbl_test where name='"+name+"'");
6 V3 @9 P" E9 M% L8 Awhile(result.next())4 S& D2 m8 F5 l' p
  {4 k1 c5 n( X$ h- ]3 u
    if(name.equals(result.getString(1))% [' ?2 e* D& O3 F& M2 ?* D
       System.out.println("Answer : "+result.getInt(2));
" c1 B2 |5 R9 V1 F; _( R  }
+ ~: n* K: w$ z( sresult.close();
# f- h8 V; V/ l现在我得到正确的输出,但是来自Java代码的此结果不在查询中,是否可以在查询中检索相同的结果…- q& [: b$ ?$ ~  a0 T
谢谢
# a) Y" ]0 K1 Q; ?7 h3 L& e& F# a; \               
3 f3 N6 ^8 j6 i& d解决方案:
1 ^) t. A; Z+ H3 A% `. u               
4 Q) d4 p' n) I* n( Y7 x* ]: i1 O# l2 M" `7 t0 x

# ]! X' j* E8 V                使用MySQLBinary运算符:$ b  w+ O1 y4 `: D2 Q* _
select value
  ]( ?+ f% G% d  ]5 w1 Gfrom tbl_test 6 y+ @3 E" O/ i! |$ P7 U$ V9 ~% v/ T
where CAST(name AS BINARY) ='abc';4 m) ?7 Z5 G8 H: ?; p  o, L1 D& X
SQL提琴演示
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则