vlookup의 경우 검색하는값이 배열 항목 내용과 동일해야 해서, 일부 존재하는 경우 검색을 위해 사용 vlookup과 유사하나 해당값이 포함된 셀을 찾아서 해당하는 반환값을 반환 찾는내용:vlookup의 대상배열과유사(vlookup의 table_array) 반환값:찾은값에따른반환인덱스에서반환하는값(vlookup의 col_index_num에서 반환하는값) 찾을값:찾는내용에서 찾을값을 찾아서 해당하는 반환값을 반환(vlookup의 lookup_value)
작성자 : 유영락, u0rak@네이버, 정보시스템감리사 프로그램 문의는 받지 않습니다만 발전적인 의견은 환영합니다. 프로그램은 자유롭게 사용 가능합니다. 프로그램에 오류가 있을수 있습니다. 대상 문서가 열려 있거나, 오픈시 다이얼로그가 실행되는 경우에는 제대로 실행되지 않습니다. 업데이트는 https://blog.naver.com/u0rak,https://u0rak.tistory.com/ 를 통해 관리 예정입니다. 도움이 되었다면 후원은 감사히 받겠습니다(SC은행, 22420285094)
오라클에서 GROUP BY 절과 SUM 함수를 사용하여 숫자를 합산할 수 있다. 그러나 문자열인 경우 SUM 함수를 사용하여 문자열을 합칠 수는 없고 대신에 LISTAGG, XMLAGG, WM_CONCAT 함수를 사용하여 그룹별 문자열 칼럼의 값을 하나의 칼럼으로 합칠 수 있다. 문자열을 합치는 함수는 오라클 버전마다 조금씩 사용법이 다르므로 아래의 예제를 참고하여 상황에 맞는 방법을 사용하면 된다.
목차
LISTAGG 함수를 사용하여 문자열 합치기 (Oracle 11g R2 이상)
XMLAGG 함수를 사용하여 문자열 합치기 (Oracle 9i 이상)
WM_CONCAT 함수를 사용하여 문자열 합치기 (Oracle 10g ~ 11g R1)
LISTAGG 함수를 사용하여 문자열 합치기 (Oracle 11g R2 이상)
SELECT job
, LISTAGG(ename, ',') WITHIN GROUP(ORDER BY ename) AS enames
FROM emp
WHERE job IN ('MANAGER', 'SALESMAN')
GROUP BY job
오라클 11g R2 이상에서 LISTAGG 함수를 사용하여 그룹별 문자열을 합칠 수 있다.
ORDER BY 절을 사용하여 문자열을 정렬하여 합칠 수 있다. 오라클 19C 이상 버전에서는 DISTINCT를 사용하여 문자열 중복을 제거할 수 있지만, 이전 버전에서는 DISTINCT를 사용할 수 없기 때문에 정규식 함수를 사용하여 문자열 중복을 제거한다. (포스팅 하단의 LISTAGG 함수 사용법 링크 참조)
XMLAGG 함수를 사용하여 문자열 합치기 (Oracle 9i 이상)
SELECT job
, SUBSTR(XMLAGG(XMLELEMENT(nm, ',', ename) ORDER BY ename).EXTRACT('//text()').GETSTRINGVAL(), 2) AS enames
FROM emp
WHERE job IN ('MANAGER', 'SALESMAN')
GROUP BY job
LISTAGG 함수를 사용할 수 없는 오라클 버전에서는 주로 XMLAGG 함수를 사용하여 문자열을 합친다. 구문이 조금 복잡해 보이지만 기능은 아주 잘 작동한다. ORDER BY 절을 사용하여 문자열을 정렬 후 문자열을 합칠 수 있다.
WM_CONCAT 함수를 사용하여 문자열 합치기 (Oracle 10g ~ 11g R1)
SELECT job
, WM_CONCAT(ename) AS enames
FROM emp
WHERE job IN ('MANAGER', 'SALESMAN')
GROUP BY job
WM_CONCAT 함수는 오라클 10g 버전부터 11g R1 버전까지 사용할 수 있다. 해당 버전이 아니면 오류가 발생한다. (ORA-00904: "WM_CONCAT": 부적합한 식별자)
특정 오라클 버전에서 한정적으로 사용할 수 있으므로 사용을 권장하지 않지만, 간단한 쿼리나 데이터 추출할 때 자주 사용한다. ORDER BY 절을 사용하여 합칠 문자열을 정렬할 수는 없으나 DISTINCT를 사용할 수 있기 때문에 아주 유용하다. (예,WM_CONCAT(DISTINCT ename) AS enames)
Excel의 텍스트 문자열에서 n번째로 나타나는 특정 문자를 찾는 것은 문자열을 구문 분석하거나 특정 구분 기호 또는 패턴을 기반으로 정보를 추출해야 하는 데이터 분석에 특히 유용할 수 있습니다. 예를 들어, 텍스트 문자열에서 문자 "-"가 두 번째 또는 세 번째로 나타나는 것을 찾아보겠습니다. 이 작업을 효율적으로 수행할 수 있는 간단한 기술을 보여 드리겠습니다.
수식을 사용하여 텍스트 문자열에서 n번째 문자 찾기
n번째 문자 발생을 찾는 공식을 만들 수 있습니다. 다음과 같이 하십시오:
1. 결과를 얻으려는 셀에 다음 수식을 입력하거나 복사하십시오.
=FIND(CHAR(1),SUBSTITUTE(A2,"-",CHAR(1),2))
주의 사항: 위 공식에서 :
A2: 문자열이 포함된 셀입니다.
-: 당신이 찾고 있는 캐릭터입니다.
2: 찾고 싶은 두 번째 항목을 필요에 따라 2…로 변경할 수 있습니다.
2. 그런 다음 수식 채우기를 아래로 드래그하여 수식을 다른 셀에 채우고 문자의 두 번째 위치가 한 번에 표시됩니다. 스크린샷을 참조하세요.
공식 설명 :
substituten번째 문자 발생을 인쇄할 수 없는 문자(CHAR(1))로 바꿉니다.
find인쇄할 수 없는 문자를 검색하여 n번째 발생 위치를 제공합니다.
사용자 정의 함수를 사용하여 텍스트 문자열에서 문자의 n번째 발생 찾기
이 섹션에서는 UDF를 만들고 사용하여 Excel에서 n번째 문자 발생을 찾는 방법을 살펴보고 데이터 처리를 최적화하는 데 도움이 되는 단계별 가이드를 제공합니다.
ALT + F11키를 눌러 응용 프로그램 용 Microsoft Visual Basic창이 열립니다.
삽입>모듈을 클릭하고 모듈 창에 다음 매크로를 붙여 넣습니다.
Function FindN(sFindWhat As String, _
sInputString As String, N As Integer) As Integer
'Updateby Extendoffice
Dim J As Integer
Application.Volatile
FindN = 0
For J = 1 To N
FindN = InStr(FindN + 1, sInputString, sFindWhat)
If FindN = 0 Then Exit For
Next
End Function
그런 다음 vba 창을 닫습니다. 워크시트로 돌아가서 다음 수식을 셀에 입력한 다음 채우기 핸들을 아래로 끌어 수식을 다른 셀에 채웁니다. 스크린샷을 참조하세요.
송신서버는 OUTBOUND, 수신서버는 INBOUND를 오픈하여 통신을 하게 되는데 통신오류가 발생하면 원인을 찾기가 쉽지 않다.
이럴 때 간단한 cmd 명령어를 통해서 통신상태를 확인해 볼 수 있는 방법을 소개하고자 한다.
telnet
telnet 명령어는 본래 원격지의 호스트에 접속하여 컨트롤 하는 것이 목적이나 패킷을 암호화 하지 않고 보악에 취약하므로 원격 컨트롤 보다는 단순히 통신 가능 여부를 확인하는 목적으로 많이 쓰인다.
telnet IP PORT
-서버에 원격 접속 시도
-ex. telnet 210.89.189.110 443
netstat
netstat 명령어는 네트워크 인터페이스의 통신 상태를 보여준다.
netstat
-네트워크 연결 상태 확인
-ex. netstat -an|find "IP:PORT"
telnet + netstat
telnet과 netstat을 동시에 사용하여 특정 원격서버와의 네트워크 통신 상태를 간단하게 확인할 수 있다.
(방화벽 확인)
1. cmd창을 두개 실행한다.
2. 1번창에 telnet IP PORT 를 입력
3. 2번창에 netstat -an|find "IP:PORT" 를 입력
4. 순서대로 실행(Enter)
5. netstat(2번창)을 통해서 telnet(1번창)의 결과를 확인
telnet 명령어를 실행하는 1번 창netstat 명령어를 실행하는 2번 창
- SYN_SENT : 신호 보냄 (상태가 지속되다가 연결이 끊길 경우 송신은 성공했으나 수신서버의 INBOUND 방화벽이 막혀있을 확률이 높음)
- ESTABLISHED : 연결 성공
- telnet(1번창)이 바로 연결 실패하여 결과를 확인할 수 없다면 송신서버의 OUTBOUND 방화벽이 막혀있을 확률이 높다.
예를들어 우리서버에서 거래처서버로 접속을 위해서 방화벽 오픈이 필요하고 할때, 우리서버는 분명 OUTBOUND방화벽을 오픈했는데 접속이 안되고 있고 거래처는 INBOUND방화벽을 오픈했다고 우기고 있는 상황이 자주 발생한다. 보통 위 결과만 보여줘도 대부분의 서버 관리자는 수긍하고 내부 방화벽을 다시 확인해 준다.
이런경우 99%는 거래처에서 사용하는 네트워크 분석툴로 패킷을 분석해보면 내부 어느 장비에서 방화벽이 막혔있고 방화벽을 열어주면 정상적으로 통신이 된다.
요청을 할 때는 작은 근거라도 있어야 하는데 그럴때 간단하게 사용할 수 있는 명령어이다.
단, 간~혹 고객사서버에서 예외적으로 telnet만 차단해놓은 경우가 있을 수는 있다. 또는 telnet대신 ping을 쓰는 사람도 많은데 ping은 네트워크공격의 위험성 때문에 더더욱 차단해놓는 경우가 많으므로 추천하지 않는다.
Setting up Cassandra JDBC Driver in DBeaver Community Edition
DBeaver is a widely used cross-platform database management application catered to developers, administrators, and analysts looking for efficient ways to work with their data. It supports many popular databases like MySQL, PostgreSQL, SQL Server, and more.
DBeaver comes in two flavors:
DBeaver Community Edition - the free and open-source version, offering built-in support for over 80 popular databases and a top-notch SQL editor.
DBeaver PRO - the commercial version with advanced features for exploring, processing, and managing SQL, NoSQL, and cloud data sources, including a visual query builder, an SQL AI assistant, and many other cutting-edge development tools.
All in all, DBeaver CE is an excellent database management solution. Supporting so many databases out of the box gives you an excellent opportunity to streamline your workflow and manage all of your database connections through a single desktop application, regardless of the underlying database vendor.
However, if you use Apache Cassandra and want to connect to Cassandra using DBeaver, you will immediately discover that the Community Edition doesn't seem to support this use case out of the box. But the good news is that DBeaver can actually access any database that has a compatible JDBC driver.
So in this article, I will show you how to connect to Cassandra with DBeaver using a Cassandra JDBC driver.
Database vendors typically provide JDBC drivers to enable software engineers to interact with their databases, and DataStax (one of the largest contributors to the open-source Cassandra project) used to distribute the Simba JDBC driver for Apache Cassandra as a free download on their website athttps://downloads.datastax.com/#odbc-jdbc-drivers.
For a long time, this driver was the de facto standard JDBC driver for Cassandra. However, at the time of this writing, the Simba JDBC driver is no longer available for download on the DataStax website.
Fortunately, the folks from ING Bank have developed a working alternative by wrapping the DataStax Java Driver for Apache Cassandra into a simple JDBC-compliant API that works perfectly with CQL3.
The?localdatacenterpart is important (assuming you have started the Cassandra Docker container with the default settings) as without it you wouldn't be able to issue commands against your Cassandra cluster.
5. Click "Test Connection" and then "OK" when the test is successfull - you should now be able to execute commands against your test cluster.
Execute a Cassandra CQL Query
1. Open a new SQL editor window.
2. Paste the following query in the SQL editor and execute it.