我想颠倒teradata 14中字符串中的单词。
Ex:'jai Keith pavan ram'输入。输出应该是'ram pavan Keith jai'。我需要动态逻辑。它也适用于此I / p。
'ram sita Laxmi'应该把o / p作为'Laxmi sita ram'。
答案 0 :(得分:2)
您可以使用STRTOK_SPLIT_TO_TABLE根据任何分隔符拆分字符串。拆分字符串称为标记,并根据其顺序给出tokennum。 然后使用XMLAGG将它们绑定在一起,这次按令牌号的降序排序令牌。
com.google.android.gms
答案 1 :(得分:0)
Adi,因为列中的内容不固定。对于动态数据,您有两种选择, 1.写一个SP 2.在unix脚本中处理它。将数据写入文件,使用AWK修改然后重新加载。
书面shell样本
###Script to export the results to the file###
rm -f Script.log
bteq << EOF >> Script.log 2>&1
.logon <ip or hostname>/<USR>,<PWD>
.OS rm -f Temp_export.out
.SET WIDTH 1000
.export REPORT FILE=Temp_export.out
Select
cast(cast(id as varchar(10))||','||cast(name as varchar(100)) as varchar(111))
from DB_SOK.testTable;
.SET TITLEDASHES OFF
.export reset
.logoff
.quit
EOF
#####removed the top two files from the report generated from previous ######
tail -n +3 Temp_export.out > temp_export_removed_header
rm -f temp_import
#######reverse the words using AWK in unxi ############################
while read LINE
do
x=`echo $LINE|cut -f1 -d','`
y=`echo $LINE|cut -f2 -d','|awk '{ for (i=NF; i>1; i--) printf("%s ",$i); print $1; }';`
echo $x,$y >> temp_import
done < temp_export_removed_header
#####script to import results to the table ####
bteq << EOF
.logon <ip or hostname>/<USR>,<PWD>
.import vartext ',' file =temp_import
database <DB_NAME>;
.quiet on;
.repeat *;
using
id (varchar(10)),
name (varchar(100))
insert into testTable2 (id,name)
values
(
:id,
:name
);
.logoff
.quit
EOF
希望它会暂时解决你的问题...... :) 如果我有时间会尝试写一个SP。