728x90
๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€ 1364

[MySQL] JSON_CONTAINS

JSON_CONTAINS()๋Š”JSON ๋ฐฐ์—ด์€ ๊ฑฐ๊ธฐ์— ํŠน์ • ๊ฐ’์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜ ์ž…๋‹ˆ๋‹ค. ์‰ผํ‘œFIND_IN_SET()๋‹ค๋ฅด๊ฒŒ, ์ •๊ทœํ™”๋œ JSON ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์œ ์šฉ ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ ์‚ฌ์šฉ๋ฒ•JSON_CONTAINS(target, candidate[, path]) target:๋™์ž‘candidate:์ฐพ๋‹คpath($.key_nameํ˜•ํƒœ)โœ… JSON ๋ฐฐ์—ด ์ฐพ๊ธฐSELECT JSON_CONTAINS('[1, 2, 3, 4]', '3'); ๊ฒฐ๊ณผ: 1 ( 3์ด ๋ฐฐ์—ด์— ์กด์žฌ)SELECT JSON_CONTAINS('[1, 2, 3, 4]', '5');๊ฒฐ๊ณผ: 0 ( 5๊ฐ€ ๋ฐฐ์—ด์— ์—†์Œ) โœ… WHERE ์—์„œ ํ™œ์šฉ์˜ˆ: ํŠน์ • ์‚ฌ์šฉ์ž์˜ ์—ญํ• (role)์ด ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ ์ฐพ๊ธฐSELECT * FROM users WHERE JSON_..

DB 2025.02.25

[MySQL][SQL] FIND_IN_SET

FIND_IN_SET()ํ•จ์ˆ˜๋Š” MySQL์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์œผ๋กœ ํ•จ์ˆ˜, ํŠน์ • ๊ฐ’์ด ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด ๋ชฉ๋ก ์•ˆ์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋Š” CSV(Comma-Separated Values) ํ˜•์‹์œผ๋กœ ์ €์žฅ๋  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ ์‚ฌ์šฉ๋ฒ•FIND_IN_SET(needle, haystack)needle: ๊ฒ€์ƒ‰ํ•  ๊ฐ’ (์ฐพ๊ณ ์ž ํ•˜๋Š” ๋‹จ์ผ ๊ฐ’)haystack: ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด ๋ชฉ๋ก์ด ํ•จ์ˆ˜๋Š” needle๋‚ด haystack์—์„œ ๋ช‡ ๋ฒˆ์งธ ์œ„์น˜(index)์— ์žˆ๋Š”์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด needle์ด haystack์— ์—†์œผ๋ฉด 0, NULL์ด ์™ธ์—๋Š” NULL๋ฐ˜ํ™˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ ์‹คํ—˜โœ… ๊ธฐ๋ณธ ์‚ฌ์šฉSELECT FIND_IN_SET('b', 'a,b,c..

DB 2025.02.24

[js][datatables] ์—‘์…€ ๋ณ€ํ™˜ ์‹œ html์ฝ”๋“œ ์ฒ˜๋ฆฌ

// HTML ํƒœ๊ทธ ์ œ๊ฑฐ ๋ฐ ์ค„๋ฐ”๊ฟˆ ์ฒ˜๋ฆฌ let text = data .replace(/]*>/g, "\r\n") // → ๊ฐœํ–‰ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ .replace(/]*>/g, "") // ๋ชจ๋“  HTML ํƒœ๊ทธ ์ œ๊ฑฐ .replace(/ /g, " ") //  ๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๋ณ€๊ฒฝ .trim(); // ์•ž๋’ค ๊ณต๋ฐฑ ์ œ๊ฑฐ

Front/JS & jQuery 2025.02.23

[js] ์†์„ฑ์ด ํฌํ•จ๋œ ํƒœ๊ทธ์˜ ์ •๊ทœ์‹ ๋ณ€ํ™˜

๋ณ€ํ˜•๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ ๋ฐœ์ƒ.๊ธฐ์กด ์ฝ”๋“œ.replace(//g, "\r\n") // → ๊ฐœํ–‰ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ ๋ณ€๊ฒฝ ์ฝ”๋“œ.replace(/]*>/g, "\r\n") // ํƒœ๊ทธ(์†์„ฑ ํฌํ•จ) → ๊ฐœํ–‰ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜

Front/JS & jQuery 2025.02.22

[js][datatables] responsive: { details: false }

$('#example').DataTable({ responsive: { details: false }});์˜๋ฏธ:responsive: DataTables์—์„œ ํ™”๋ฉด ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์ปฌ๋Ÿผ์„ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ํ‘œ์‹œํ•˜์—ฌ ๋ฐ˜์‘ํ˜• UI๋ฅผ ์ง€์›ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค.details: false: ๋ฐ˜์‘ํ˜• ์ฒ˜๋ฆฌ ์‹œ ์ˆจ๊ฒจ์ง„ ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ƒ์„ธ ์ •๋ณด ํ‘œ์‹œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.๋™์ž‘ ๋ฐฉ์‹:responsive๊ฐ€ ํ™œ์„ฑํ™”๋˜๋ฉด ํ™”๋ฉด ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์งˆ ๋•Œ ์ผ๋ถ€ ์ปฌ๋Ÿผ์ด ์ˆจ๊ฒจ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๊ธฐ๋ณธ์ ์œผ๋กœ, ์ˆจ๊ฒจ์ง„ ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ๋Š” ํด๋ฆญ ์‹œ + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ƒ์„ธ ๋ณด๊ธฐ(details ๊ธฐ๋Šฅ)์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.details: false๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ด ์ƒ์„ธ ๋ณด๊ธฐ ๊ธฐ๋Šฅ์ด ๋น„ํ™œ์„ฑํ™”๋˜์–ด, ์ˆจ๊ฒจ์ง„ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์˜ˆ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.  ๊ธฐ๋ณธ ์„ค์ • (d..

Front/JS & jQuery 2025.02.21

[js][datatables] fnRecordsDisplay()

if (this.$table.dataTable().fnSettings().fnRecordsDisplay() > 0) { // Execute logic if there are records displayed}this.$table.dataTable()DataTable ์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค..fnSettings()DataTables์˜ ๋‚ด๋ถ€ ์„ค์ • ๊ฐœ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค..fnRecordsDisplay()์ ์šฉ๋œ ํ•„ํ„ฐ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ํ˜„์žฌ ํ‘œ์‹œ๋œ ๋ ˆ์ฝ”๋“œ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Front/JS & jQuery 2025.02.20

[JAVA] Optional ์ฃผ์˜ํ•  ์ 

โŒ Optional์„ ํ•„๋“œ์— ์‚ฌ์šฉํ•˜์ง€ ๋ง ๊ฒƒclass User { private Optional name; // โŒ ๊ถŒ์žฅ๋˜์ง€ ์•Š์Œ}โœ” Optional์€ ๋ฉ”์„œ๋“œ ๋ฐ˜ํ™˜ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•จโœ” ํ•„๋“œ์—๋Š” null ๋Œ€์‹  ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์  ํ•„๋“œ์—๋Š” ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ , ๋ฉ”์„œ๋“œ ๋ฐ˜ํ™˜ ํƒ€์ž…์œผ๋กœ๋งŒ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•จ

JAVA 2025.02.19

[JAVA] Optional์„ ํ™œ์šฉํ•œ ์ปฌ๋ ‰์…˜ ์ฒ˜๋ฆฌ

โœ… ๋ฆฌ์ŠคํŠธ๊ฐ€ null์ผ ์ˆ˜๋„ ์žˆ๋Š” ๊ฒฝ์šฐ ์•ˆ์ „ํ•œ ์ฒ˜๋ฆฌList names = null;List safeNames = Optional.ofNullable(names).orElse(Collections.emptyList());for (String name : safeNames) { System.out.println(name);}โœ” null์ด๋ฉด emptyList()๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ NullPointerException ๋ฐฉ์ง€โœ” ํ–ฅ์ƒ๋œ for๋ฌธ์—์„œ๋„ ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰ ๊ฐ€๋Šฅ

JAVA 2025.02.18

[JAVA] Optional ์ฃผ์š” ๋ฉ”์„œ๋“œ ์ •๋ฆฌ

โœ… ๊ฐ’์ด ์กด์žฌํ•  ๋•Œ๋งŒ ์‹คํ–‰ (ifPresent())Optional optional = Optional.of("Hello");optional.ifPresent(System.out::println); // ์ถœ๋ ฅ: Helloโœ” ๊ฐ’์ด ์žˆ์„ ๋•Œ๋งŒ System.out.println() ์‹คํ–‰โœ” ๊ฐ’์ด ์—†์œผ๋ฉด ์•„๋ฌด ๋™์ž‘๋„ ํ•˜์ง€ ์•Š์Œ โœ… ๊ฐ’์ด ์—†์„ ๋•Œ ๊ธฐ๋ณธ๊ฐ’ ์„ค์ • (orElse())String result = Optional.ofNullable(null).orElse("Default Value");System.out.println(result); // ์ถœ๋ ฅ: Default Valueโœ” ๊ฐ’์ด ์—†์œผ๋ฉด "Default Value" ๋ฐ˜ํ™˜ โœ… ๊ฐ’์ด ์—†์„ ๋•Œ ๋™์ ์œผ๋กœ ๊ฐ’ ์„ค์ • (orElseGet())String result = ..

JAVA 2025.02.17

[JAVA] Optional์„ ํ™œ์šฉํ•œ null ์•ˆ์ „ ์ฒ˜๋ฆฌ

โŒ ์ „ํ†ต์ ์ธ null ์ฒดํฌ ๋ฐฉ์‹public String getUserName(User user) { if (user != null) { return user.getName(); } else { return "Unknown"; }} โœ… Optional์„ ์‚ฌ์šฉํ•œ ๊ฐœ์„ ๋œ ๋ฐฉ์‹public String getUserName(User user) { return Optional.ofNullable(user) .map(User::getName) .orElse("Unknown");}โœ” ofNullable()๋กœ null ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐ์‹ธ๊ณ ,โœ” map()์„ ์‚ฌ์šฉํ•ด ์•ˆ์ „ํ•˜๊ฒŒ getName() ํ˜ธ์ถœ,โœ” ๊ฐ’์ด ์—†์œผ๋ฉด orE..

JAVA 2025.02.16
728x90
๋ฐ˜์‘ํ˜•